VPython:一个Python的3D图形动画库+被忽略的数据可视化功能

1 说明:
=====
1.1 VPython是一套简单易用的三维图形库 , 使用它可以快速创建三维场景和动画 。
1.2 VPython 是python默认的3D模块 , 与PyOpenGL相比 , 容易上手 , 无需太多编程技巧 。
1.3 主要讲解入门 , 对代码进行修改 , 代码为注释版 , 同时讲一讲ta被人忽略的强大的数据可视化作图功能 。
1.4 支持中文 , 建议默认浏览器为谷歌浏览器 。
VPython:一个Python的3D图形动画库+被忽略的数据可视化功能文章插图
2 准备:
=====
2.1 官网:
#网速慢#网速慢#GlowScript 3.0 VPython , 是最新版的VPython , 源代码来自这里 , 进行修改2.2 环境:
华为笔记本电脑、深度deepin-linux操作系统、python3.8和微软vscode编辑器 。
2.3 安装:
pip install vpython#本机安装 , 采用清华国内源 , 超速sudo pip3.8 install -ivpython3 Helloworld:
【VPython:一个Python的3D图形动画库+被忽略的数据可视化功能】==========
3.1 代码:
from vpython import *#t = text(text='Faces forward', pos=vec(-4,0,0),color=color.cyan, billboard=True, emissive=True)#屏幕默认大小和背景颜色#注意vec=vectortext(text='Hello World', pos=vec(-4,0,0),color=color.cyan, billboard=True, emissive=True)3.2 操作和效果图:
VPython:一个Python的3D图形动画库+被忽略的数据可视化功能文章插图
4 box和scene:
===========
4.1 代码:
from vpython import *#注意不管scene.caption的位置放在哪里 , 都是在scene==canvas==画布的下面显示文字scene.caption = """3D text can be "billboard" text -- always facing you.你好"""#屏幕=scene大小==canvas=画布==差不多scene.width = 500scene.height = 500#背景颜色 , 默认为黑色#scene.background = color.gray(0.9)scene.background = color.red#注意没有box(),下面不显示文字 , 也就是scene不显示在浏览器中#pos==position==位置 , 初始位置0,0,0==屏幕中心#size==边长==长=宽=高==1box(pos=vec(0,0,0), opacity=1, size=vec(1,1,1), texture=textures.flower)#scene.caption = """你好"""4.2 效果图:
VPython:一个Python的3D图形动画库+被忽略的数据可视化功能文章插图
5 Bounce:
=======
5.1 代码:
from vpython import *scene.caption = """1 滑动鼠标滑轮进行zoom放大缩小2 点击右键进行旋转"""side = 4.0thk = 0.3s2 = 2*side - thks3 = 2*side + thkwallR = box (pos=vector( side, 0, 0), size=vector(thk, s2, s3),color = color.red)wallL = box (pos=vector(-side, 0, 0), size=vector(thk, s2, s3),color = color.red)wallB = box (pos=vector(0, -side, 0), size=vector(s3, thk, s3),color = color.blue)wallT = box (pos=vector(0,side, 0), size=vector(s3, thk, s3),color = color.blue)wallBK = box(pos=vector(0, 0, -side), size=vector(s2, s2, thk), color = color.gray(0.7))ball = sphere (color = color.green, radius = 0.4, make_trail=True, retain=200)ball.mass = 1.0ball.p = vector (-0.15, -0.23, +0.27)side = side - thk*0.5 - ball.radiusdt = 0.3while True:rate(200)ball.pos = ball.pos + (ball.p/ball.mass)*dtif not (side > ball.pos.x > -side):ball.p.x = -ball.p.xif not (side > ball.pos.y > -side):ball.p.y = -ball.p.yif not (side > ball.pos.z > -side):ball.p.z = -ball.p.z5.2 效果图:
VPython:一个Python的3D图形动画库+被忽略的数据可视化功能文章插图
===讲解被忽略的数据可视化功能===
6 gdots:
======
6.1 代码:
#散点图==gdots==graph-dots==Scatterfrom vpython import *#oscillation = graph(title=s, xtitle='time', ytitle='value', fast=False, width=800)#图表标题 , 支持中文 , x和y坐标轴名称 , 图表宽800graph(title='图表', xtitle='time', ytitle='value', fast=False, width=800) #等同上面data=http://kandian.youth.cn/index/[[1,5],[4,2],[6,1],[2,5],[3,4]]funct3 = gdots(color=color.red, size=6, label='dots')funct3.plot(data)6.2 图:其实内置plotly , 简单且强大 。
VPython:一个Python的3D图形动画库+被忽略的数据可视化功能文章插图
7 gvbars:
=======
7.1 代码:
'''#1组gvbars==graph-v-bars==垂直柱状图from vpython import *#图表标题 , 支持中文 , x和y坐标轴名称 , 图表宽800graph(title='图表', xtitle='time', ytitle='value', fast=False, width=800) data=http://kandian.youth.cn/index/[[1,5],[2,2],[3,3],[4,4],[5,6]]funct3 = gvbars(delta=0.4, color=color.green, label='bars')funct3.plot(data)'''#2组gvbars==graph-v-bars==垂直柱状图#备注:gvbars==ghbars≠gbarsfrom vpython import *#图表标题 , 支持中文 , x和y坐标轴名称 , 图表宽800graph(title='图表', xtitle='time', ytitle='value', fast=False, width=800) #数据1data1=[[1,5],[2,2],[3,3],[4,4],[5,6]]funct1 = gvbars(delta=0.4, color=color.green, label='bars-1')funct1.plot(data1)#数据2data2=[[1,3],[2,5],[3,4],[4,2],[5,2]]funct2 = gvbars(delta=0.4, color=color.red, label='bars-2')funct2.plot(data2)