范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Glumpy是一个用pythonOpenGL来进行快速Numpy可视化科学库

  1 说明:
  =====
  1.1 Glumpy:是一个OpenGL+NumPy库,它用OpenGL来进行快速Numpy可视化。
  1.2 即:Python+Numpy+OpenGL实现快速,可扩展和美观的科学可视化。
  1.3 它是一个由Nicolas Rougier启动的开源项目,致力于高效可视化。
  1.4 Glumpy使用OpenGL纹理(textures)来表示阵列,因为这恐怕是在现代图形硬件上最快的可视化方法了。
  2 准备:
  =====
  2.1 官网:https://pypi.org/project/glumpy/ https://github.com/glumpy/glumpy https://glumpy.readthedocs.io/en/latest/ http://glumpy.github.io/
  Glumpy:高效美观的科学可视化库
  Glumpy - Python+Numpy+OpenGL: fast, scalable and beautiful scientific visualization
  2.2 环境:
  华为笔记本电脑、深度deepin-linux操作系统、谷歌浏览器、python3.8和微软vscode编辑器。
  2.3 安装:pip install glumpy #本机安装 sudo pip3.8 install glumpy #本机推荐安装 sudo pip3.8 install -i https://mirrors.aliyun.com/pypi/simple glumpy
  3 优美动画赏析:
  ===介绍入门和防止掉坑===
  4 第一个窗口:
  ===========
  4.1 注释版代码:from glumpy import app #本机安装过pyglet,而且glumpy默认是pyglet app.use("pyglet")  #默认这个,但本机推荐这个 #注意没有上面的use的指定,会报错,也会自动默认pyglet打开 #比如下面的报错 #[w] Backend () not available #可以用的窗口模块 #backend : ["osxglut", "freeglut", "pyglet", "glfw", "sdl", "sdl2", "pyside"] Graphical toolkit to use  #window = app.Window() #实例化窗口,大小设置,窗口名 #背景颜色color=(0,0,0,1)=黑色;color=(1,1,1,1)=白色;注意RGBA=RGB-A=RGB三基色+A透明度 window = app.Window(800,800,"The First win(第一个窗口)",color=(1,1,1,1))  #支持中文 #window = app.Window(width=800,height=800,title="The First win(第一个窗口)") #等同上面  #注意:如果没有这个窗口时间,那么上面的背景颜色设置就是默认黑色,一直没有反应 @window.event def on_draw(dt):     window.clear()  app.run() #duration=5==持续5秒后自动关闭窗口 #app.run(duration=5) #run的参数:framerate=帧率=60(秒) #clock=None, framerate=None, interactive=None, duration=sys.maxsize, framecount=sys.maxsize
  4.2 上面简洁版代码:from glumpy import app app.use("pyglet")  #默认这个,但本机推荐这个 window = app.Window(800,800,"The First win(第一个窗口)",color=(1,1,1,1))  #支持中文  @window.event def on_draw(dt):     window.clear()  app.run()
  4.3 图:
  5 你好世界:Helloworld:
  ==================
  5.1 代码:from glumpy import app from glumpy.graphics.text import FontManager from glumpy.graphics.collections import GlyphCollection from glumpy.transforms import Position, OrthographicProjection #窗口大小和标题名设置 window = app.Window(1000, 1000,"你好世界") #window = app.Window(width=1000, height=1000,title="你好世界") #等同于上面的 #app.use("glfw")   app.use("pyglet")  #本机采用这个 @window.event def on_draw(dt):     window.clear()     label.draw()  x,y,z = 0,500,0 #自定义中文字体:路径和字体名,字体大小设置 font = FontManager.get("/home/xgj/Desktop/glumpy/hwfs.ttf", 20, mode="agg") label = GlyphCollection("agg", transform=OrthographicProjection(Position())) #color=(1,1,1,1)为白色 #anchor_x = "center", anchor_y = "center" label.append("Hello World 你好世界!", font,anchor_x = "left", anchor_y = "center",origin=(x,y,z), color=(0.6,0.4,0.2,1)) window.attach(label["transform"]) app.run()
  5.2 图:
  6 多彩爱心:
  ========
  6.1 代码:import numpy as np from  glumpy import app from glumpy.graphics.collections import MarkerCollection app.use("pyglet") #窗口大小,窗口名,背景颜色白色 window = app.Window(1024,1024, "多彩爱心满屏",color=(1,1,1,1)) @window.event def on_draw(dt):     window.clear()     markers.draw()     markers["orientation"] += np.random.uniform(0.0,0.1,len(markers))     del markers[0]  #逐个删除列表的0位爱心,逐个减少     if not len(markers): #最后没有退出         app.quit()  n = 556 markers = MarkerCollection(orientation="local") markers.append(np.random.uniform(-1,1,(n,3)),                bg_color = np.random.uniform(0,1,(n,4)),                size = 64, fg_color=(0,0,0,1))  window.attach(markers["transform"]) window.attach(markers["viewport"]) app.run()
  6.2 效果图:
  7 colorful Scatter:
  ============
  7.1 代码:import numpy as np from glumpy import app from glumpy.graphics.collections import PointCollection app.use("pyglet") #背景颜色color=(1,1,1,1)为白色 window = app.Window(1024,1024,"多彩散点图", color=(.2,.2,.2,1)) points = PointCollection("agg", color="local", size="local")  @window.event def on_draw(dt):     window.clear()     points.draw()     if len(points) < 100000:         points.append(np.random.normal(0.0,0.5,(1,3)),                       color = np.random.uniform(0,1,4),                       size  = np.random.uniform(1,24,1))  window.attach(points["transform"]) window.attach(points["viewport"]) app.run()
  7.2 效果图:
  8 green wave:
  ==========
  8.1 代码:#oscilloscope==green wave import numpy as np from glumpy import app, gl, glm, gloo  vertex = """ attribute float x, y, intensity; varying float v_intensity; void main (void) {     v_intensity = intensity;     gl_Position = vec4(x, y, 0.0, 1.0); } """  fragment = """ varying float v_intensity; void main() {     gl_FragColor = vec4(0,v_intensity,0,1); } """ app.use("pyglet")  #默认这个,但本机推荐这个 window = app.Window(width=1024, height=512,title="greenwave")  @window.event def on_draw(dt):     global index     window.clear()     oscilloscope.draw(gl.GL_LINE_STRIP)     index = (index-1) % len(oscilloscope)     oscilloscope["intensity"] -= 1.0/len(oscilloscope)     oscilloscope["y"][index] = np.random.uniform(-0.25, +0.25)     oscilloscope["intensity"][index] = 1.0 index = 0 oscilloscope = gloo.Program(vertex, fragment, count=150) oscilloscope["x"] = np.linspace(-1,1,len(oscilloscope)) app.run()
  8.2 图:
  9 matplotlib的API:
  =============
  9.1 代码:import numpy as np from glumpy.api.matplotlib import * #推荐增加这2行 #from glumpy import app #app.use("pyglet")  #默认这个,但本机推荐这个  # Create a new figure figure = Figure((24,12)) # Create a subplot on left, using trackball interface (3d) left = figure.add_axes( [0.010, 0.01, 0.485, 0.98],                         xscale = LinearScale(clamp=True),                         yscale = LinearScale(clamp=True),                         zscale = LinearScale(clamp=True),                         interface = Trackball(name="trackball"),                         facecolor=(1,0,0,0.25), aspect=1 ) # Create a subplot on right, using panzoom interface (2d) right = figure.add_axes( [0.505, 0.01, 0.485, 0.98],                          xscale = LinearScale(domain=[-2.0,+2.0], range=[0.25,1.00]),                          yscale = LinearScale(domain=[-2.0,+2.0], range=[0,2*np.pi]),                          projection = PolarProjection(),                          interface = Trackball(name="trackball"),                          facecolor=(0,0,1,0.25), aspect=1 ) # Create a new collection of points collection = PointCollection("agg") # Add a view of the collection on the left subplot left.add_drawable(collection) # Add a view of the collection on the right subplot right.add_drawable(collection) # Add some points collection.append(np.random.uniform(-2,2,(10000,3))) # Show figure figure.show()
  9.2 图:
  10 简化qt5:
  ==========
  10.1 代码:import numpy as np from glumpy import app from PyQt5.QtWidgets import QMainWindow, QWidget, QVBoxLayout, QPushButton  app.use("qt5") window = app.Window() #window = app.Window(width=1000, height=1000,title="qt5")  #设置窗口大小和名称无效 qwindow = QMainWindow() #源代码中无下面2行,自己增加的,这样设置主窗口位置和大小、标题名 qwindow.setGeometry(0,0,800,800)  #自己增加 qwindow.setWindowTitle("Glumpy qt5")  #自己增加  widget = QWidget() button = QPushButton("Press me!") qwindow.setCentralWidget(widget) widget.setLayout(QVBoxLayout()) widget.layout().addWidget(window._native_window) widget.layout().addWidget(button)  @window.event def on_draw(dt):     window.clear()  @button.clicked.connect def on_click():     window.color = np.random.rand(4)  qwindow.show() app.run()
  10.2 图:
  10.3 我无法解决的一个小bug=报错,希望大神指点,谢谢!!
  ===自己整理并分享出来===
  喜欢的人,请点赞、关注、评论、转发和收藏。

转给家长丨不知从何教育起?不妨先自查一下自己是哪类家长一个孩子未来如何,看父母的层次就知道了。父母的层次,决定了孩子脚下的路,决定了孩子看待事物的格局,靠谱的父母,都赢在细节。1你给孩子的陪伴,90都是假的近年来,陪伴成为了亲子教育中对待父母的态度,是你最真实的人品人非圣贤,孰能无过。周国平说对亲近的人挑剔是本能,但克服本能,做到对亲近的人不挑剔,则是种教养。父母是我们最亲近的人,他们渐渐老去,成为弱的那一方,我们占据强者优势。在对待父母的态图说丨别笑太大声,领导会听见!快来看这组猫咪表情包教师也是人,也要每天经历上下班累成狗的过程,来看看下面这一组猫咪表情包是不是完全再现了你生活的实际?看完别笑得太大声哦领导在隔壁!刚刚参加工作的菜鸟老师门卫大叔学校财务老师校长副校我为什么不愿教穷人家的小孩?今天的标题听上去有些耸人听闻,为躲避汹涌而至的砖头,先严正声明我们所说的穷人家,与经济和社会地位无关,是说那些自己不爱学习不会思考,精神贫困的孩子父母,孩子在这样的引导下不知道会走一个街头实验让很多人都沉默了这个暖心的冷知识,你get到了吗最近,网上有一段视频火了10月14日中午,河南郑州一路口信号灯故障。一个盲人不停挥舞盲杖要过马路,但车辆接连着呼啸而过。就在盲人大爷茫然无助时,一个身影毫不犹豫冲了过去这个身影是郑当啃老披上孝顺的外壳,苏明成式啃老不是最可怕的,这两种更常见翠翠是家里的老大,跟弟弟相差十多岁,因为家庭条件不是太好,翠翠从小就用功读书,长大后考上了师范学校,成了一名优秀的英语老师,老公在银行工作,婆家条件也挺好,自然地,翠翠就过得比较好和郭敬明互怼上热搜的李诚儒老师,跟儿子和好了吗?现状让人欣慰李诚儒老师又上热搜了,这次没别的,还是因为性格耿直,敢说真话,甚至于有点不近人情,而他这样,也不止一次了。第一次演员请就位时就公开评价两位明星演绎的悲伤逆流成河,用如坐针毡,如芒刺阅卷老师最喜欢的衡水体英文,是怎么练出来的?看完过程酸了衡水体,顾名思义,就是衡水中学特有的字体,其中有中文也有英文,这样的字体到底在中高考中占据什么优势?光说没用,看扫描到电脑上的效果图,可能就一目了然了吧。这是一篇2016年高考的英秦昊和伊能静按活300岁来保养,大龄父母的崩溃,有钱也逃不掉大龄父母是个特殊的群体,尤其是过了40岁,怀孕产检的时候,风险比适龄父母要高很多,身体的抗劳累程度也明显力不从心,甚至送孩子上幼儿园,他们也容易被误认,您是孩子的什么人?爷爷还是奶40除以5等于71,还有验算过程,让老师瑟瑟发抖的家长诞生了不知道从什么时候开始,辅导作业成了家长的分内事,时间久了,家长也主动分成了如下几类1敢怒不敢言型虽然觉得辅导作业是应该的,但是老师要求检查,签字,孩子做错了就不停在群里艾特家长,搞邱淑贞女儿颜值远超林青霞女儿,爸爸的骨相硬伤,太浪费妈妈美貌邱淑贞和林青霞是父母那个年代出名的美人,随便拿出一张便可以艳压全场,随着美人迟暮,纷纷结婚生女,女儿的长相继承母亲的美貌了吗?年轻时期的林青霞到底有多美?难怪林青霞都60多岁了,年
婴幼儿如何预防腹泻?婴幼儿如何预防腹泻?婴幼儿免疫功能尚未发育完善,免疫力低,而且生活无法自理,卫生意识尚未建立,是腹泻的高危人群。爸爸妈妈们照看宝宝时,需要注意以下几点01母乳喂养的妈妈,应注意乳头为什么现在的小孩过敏体质特别多?过敏体质是指有一定遗传性的,对某种物质出现过敏症状的表现。过敏体质在国外又被称之为中产阶级病。因为,经过流行病学的调查,在资产阶级和无产阶级中,这种病症发病率较低。为什么中产阶级得今天,跟宝宝在家,有个陌生人敲我家的门中午十二点,收拾妥当准备带上宝宝出门嗦粉,刚走到门前想开门。突然,门被人用力地敲响了。我隔着门问你敲我家门干什么哇?男子说我想进你家看下户型,麻烦开下门呢。与此同时,门不停地被敲响简单的方法,改掉孩子写作业磨蹭的习惯,成为独立高效的孩子如何改变作业拖拉磨蹭的孩子?今天来和大家分享一下,我是如何花了不到21天时间,让一个每天晚上写作业拖拉到十点钟还完不成的小女孩,变成一个能够正常完成作业的孩子的。先来看一个故事,有特殊时期特别家教(总755期)为了在特殊时期为家长提供特别的家庭教育指导,全国妇联推出了特殊时期特别家教微信栏目,家长可以通过家庭教育微课学习家庭教育知识。特殊时期特别家教(总755期)谁都不可否认,儿童阅读已孕期打麻将十打九赢,是因为胎运在助攻?孕期可以打麻将吗?本文由护芽妈妈原创,欢迎个人转发和分享怀孕后,对于那些选择在家待产的准妈妈来说,是真的很无聊,因为身体的原因,很多的娱乐项目通通都被限制停掉了。于是打麻将成为了孕妈们比较青睐的娱乐母乳喂养可以增强婴儿的心脏一项开创性的研究表明,母乳可以极大地促进早产儿的心脏。这项研究增加了母乳对早产婴儿的已知益处,研究负责人爱尔兰皇家外科医学院(RCSI)医学与健康大学儿科临床教授AfifElKhu剖腹产后腰痛是麻醉惹得事?小张因为胎位不正选择了剖腹产,今天是产后42天来医院复查,恶露的颜色和量都正常,也没有异味,腹部的伤口愈合良好,宫颈子宫恢复的不错,妇检子宫双侧附件没有压痛,没有肿块。还做了B超检预产期是大年初一,老公是独生子,一家人只能在医院过年了,有没有什么好办法?有人说女人怀孕就变傻了,我恐怕你也差不多吧。本来初为人母,那是一件多么高兴多么激动的事儿啊。这跟大年初一生还是大年三十生有那么重要的关系吗?至于预产期准不准,是否做剖腹产,另当别论怀孕初期恶心但是不吐,胃里也不舒服不想吃饭,怎么办?怀孕时期孕吐是比较痛苦的一件事了,更为痛苦的是经常听到身边的人劝说多吃点有营养的,对宝宝好,吃完了大不了吐出来而已,不要那么娇气!说这句话的人你来试试吐的生不如死的滋味。也有很多宝可爱,不是你放纵孩子长胖的理由随着社会的进步和人们生活水平的提高,吃不饱饭的现象已经越来越少,随之而来的却是另外一个问题肥胖。体重超标不是成年人的专利,在饮食结构不合理学习压力大缺乏锻炼等各种因素作用下,我国的