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

1 说明:

=====

1.1 VPython是一套简单易用的三维图形库,使用它可以快速创建三维场景和动画。

1.2 VPython 是python默认的3D模块,与PyOpenGL相比,容易上手,无需太多编程技巧。

1.3 主要讲解入门,对代码进行修改,代码为注释版,同时讲一讲ta被人忽略的强大的数据可视化作图功能。

1.4 支持中文,建议默认浏览器为谷歌浏览器。

fb2f515556a08ab0a8dada5c38006572.png

2 准备:

=====

2.1 官网:

https://www.vpython.org/ #网速慢https://vpython.org/  #网速慢https://www.glowscript.org/docs/VPythonDocs/index.htmlhttps://pypi.org/project/vpython/https://github.com/vpython/glowscript  #GlowScript 3.0 VPython,是最新版的VPython,源代码来自这里,进行修改

2.2 环境:

华为笔记本电脑、深度deepin-linux操作系统、python3.8和微软vscode编辑器。

2.3 安装:

pip install vpython#本机安装,采用清华国内源,超速sudo pip3.8 install -i https://mirrors.aliyun.com/pypi/simple vpython

3 Helloworld:

==========

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 操作和效果图:

90fc28dcbc1489b858e3c1500244917d.gif

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 效果图:

acfc4e802a11d9821e2587292fd2b9b0.gif

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)*dt    if not (side > ball.pos.x > -side):        ball.p.x = -ball.p.x    if not (side > ball.pos.y > -side):        ball.p.y = -ball.p.y    if not (side > ball.pos.z > -side):        ball.p.z = -ball.p.z

5.2 效果图:

13d13f83922cc329b7dad1b0abf193ce.gif

===讲解被忽略的数据可视化功能===

6 gdots:

======

6.1 代码:

#散点图==gdots==graph-dots==Scatterfrom vpython import *#oscillation = graph(title=s, x, y, fast=False, width=800)#图表标题,支持中文,x和y坐标轴名称,图表宽800graph(, x, y, fast=False, width=800) #等同上面data=[[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,简单且强大。

adf0fd54ff1cce4e2a6b5758c2ddf668.gif

7 gvbars:

=======

7.1 代码:

'''#1组gvbars==graph-v-bars==垂直柱状图from vpython import *#图表标题,支持中文,x和y坐标轴名称,图表宽800graph(, x, y, fast=False, width=800) data=[[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(, x, y, 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)

7.2 图:

29f153d25fcf0ec0868de4068f0b37c0.gif

8 gcurve:

=======

8.1 代码:

#2组gcurve==graph-curve==折线图#也是Scatter兼顾from vpython import *#图表标题,支持中文,x和y坐标轴名称,图表宽800graph(, x, y, fast=False, width=800) #数据1data1=[[1,5],[2,2],[3,3],[4,4],[5,6]]funct1 = gcurve(color=color.blue, width=4, markers=True, marker_color=color.black, label='curve-1')funct1.plot(data1)#数据2data2=[[1,3],[2,5],[3,4],[4,2],[5,2]]funct2 = gcurve(color=color.green, width=4, markers=True, marker_color=color.red, label='curve-2')funct2.plot(data2)

8.2 效果图:

a61795882fd0ae43a314d6c0a9dd6bae.gif

===可用图形简单,但很方便===

大神,可以适当修改,位置在:

比如本机root下的位置

/usr/local/python3.8/lib/python3.8/site-packages/vpython/vpython.py

第2071行开始,适当增加即可。

放一个官网源代码的图,代码就省略了。

58280e5d29a84498eaf59d81fd00a97c.gif2aeae01b6f6d0f8f6935c5c3dae7a218.gife75875203d08106a047c110ab7d2aabd.gif4221f6932cb501a202baa80b6f4b37d2.gif

===好强大呀,而且很简单,国内基本没有人介绍===

===自己整理并分享出来===

喜欢的点赞、评论、关注、转发和收藏。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部