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

Pyqtgraph是Python平台上一种功能强大的2D3D绘图库

  1 说明:
  =====
  1.1 pyqtgraph是Python平台上一种功能强大的2D/3D绘图库,相当于matplotlib库,比它更强大。
  1.2 由于内部实现方式上,使用了高速计算的numpy信号处理库以及Qt的GraphicsView框架。
  1.3 环境:
  华为笔记本电脑、深度deepin-linux操作系统、python3.8和微软vscode编辑器。
  1.4 对开源的源代码进行删减、修改、注释和整理,突出重点,易于操作。
  不在迷茫
  2 安装:
  =====
  2.1 pyqtgraph库安装:pip install --user pyqtgraph #本机安装 #pip3.8 install -i https://mirrors.aliyun.com/pypi/simple pyqtgraph #超快
  2.2 PyQt5安装:需要配合pip install PyQt5 #文件太大,速度太慢 #本机安装,推荐国内源安装 pip3.8 install -i https://mirrors.aliyun.com/pypi/simple PyQt5
  2.3 小插曲:本机,每个电脑可能不一样。#在微软vscode编辑器中python中可以导出模块,报错 https://stackoverflow.com/questions/26191513/opengl-error-in-python-pyqtgraph-opengl-items-glscatterplotitem-glscatterplot-it #发现这个包放错了 Requirement already satisfied: pyqtgraph in ./.local/lib/python3.8/site-packages (0.10.0) #复制到 Requirement already satisfied: numpy in /usr/local/python3.8/lib/python3.8/site-packages (from pyqtgraph) (1.18.2) #root形式进入
  2.4 官网:源码来源。https://github.com/pyqtgraph/pyqtgraph http://pyqtgraph.org/
  官网的源码的一个动画,暂时不是本章重点讲解,本次讲解基础。
  3 sin、cos:
  ========
  3.1 sin和cos,代码放在一起,注释里有:import pyqtgraph as pg import numpy as np import array  app = pg.mkQApp()#建立app win = pg.GraphicsWindow()#建立窗口 win.setWindowTitle("pyqtgraph逐点画波形图") #窗口名称 win.resize(800, 500)#窗口大小  data = array.array("d") #可动态改变数组的大小,double型数组 historyLength = 100#横坐标长度 p = win.addPlot()#把图p加入到窗口中 p.showGrid(x=True, y=True)#把X和Y的表格打开 p.setRange(xRange=[0,historyLength], yRange=[-1.2, 1.2], padding=0) p.setLabel(axis="left", text="y / V")#靠左,y轴 p.setLabel(axis="bottom", text="x / point") #靠下,x轴 p.setTitle("y = sin(x)")#表格的名字 curve = p.plot()#绘制一个图形 idx = 0 #定义函数 def plotData():     global idx#内部作用域想改变外部域变量     tmp = np.sin(np.pi / 50 * idx)  #sin动态函数曲线     #tmp = np.cos(np.pi / 50 * idx)  #cos动态函数曲线     if len(data)This is the
  PEAK           ", anchor=(-0.3,0.5), angle=20, border="w", fill=(0, 0, 255, 100)) plot.addItem(text) text.setPos(0, y.max())  #画箭头 arrow = pg.ArrowItem(pos=(0, y.max()), angle=-45) plot.addItem(arrow)  ## 设置动画和曲线 curvePoint = pg.CurvePoint(curve) plot.addItem(curvePoint) #text2是动态显示text text2 = pg.TextItem("test", anchor=(0.5, -1.0)) text2.setParentItem(curvePoint) arrow2 = pg.ArrowItem(angle=90) arrow2.setParentItem(curvePoint)  index = 0 def update():     global curvePoint, index     index = (index + 1) % len(x)     curvePoint.setPos(float(index)/(len(x)-1))     text2.setText("[%0.1f, %0.1f]" % (x[index], y[index]))      timer = QtCore.QTimer() timer.timeout.connect(update) timer.start(10) #every 10ms  if __name__ == "__main__":     QtGui.QApplication.instance().exec_()
  3.4 效果图:
  4 3D-GL模块调用的效果图:
  4.1 代码:# -*- coding: utf-8 -*- #导出模块 from pyqtgraph.Qt import QtCore, QtGui import pyqtgraph as pg import pyqtgraph.opengl as gl import numpy as np  ## Create a GL View widget to display data,GL模块 app = QtGui.QApplication([]) w = gl.GLViewWidget() w.show() w.setWindowTitle("pyqtgraph example: GLSurfacePlot") w.setCameraPosition(distance=50)  ## Add a grid to the view g = gl.GLGridItem() g.scale(2,2,1) g.setDepthValue(10)  w.addItem(g)  #P1图 z = pg.gaussianFilter(np.random.normal(size=(50,50)), (1,1)) p1 = gl.GLSurfacePlotItem(z=z, shader="shaded", color=(0.5, 0.5, 1, 1)) p1.scale(16./49., 16./49., 1.0) p1.translate(-18, 2, 0) w.addItem(p1)  #P2图 x = np.linspace(-8, 8, 50) y = np.linspace(-8, 8, 50) z = 0.1 * ((x.reshape(50,1) ** 2) - (y.reshape(1,50) ** 2)) p2 = gl.GLSurfacePlotItem(x=x, y=y, z=z, shader="normalColor") p2.translate(-10,-10,0) w.addItem(p2)  #P3图 z = pg.gaussianFilter(np.random.normal(size=(50,50)), (1,1)) x = np.linspace(-12, 12, 50) y = np.linspace(-12, 12, 50) colors = np.ones((50,50,4), dtype=float) colors[...,0] = np.clip(np.cos(((x.reshape(50,1) ** 2) + (y.reshape(1,50) ** 2)) ** 0.5), 0, 1) colors[...,1] = colors[...,0]  p3 = gl.GLSurfacePlotItem(z=z, colors=colors.reshape(50*50,4), shader="shaded", smooth=False) p3.scale(16./49., 16./49., 1.0) p3.translate(2, -18, 0) w.addItem(p3)  #P4图:动画 cols = 90 rows = 100 x = np.linspace(-8, 8, cols+1).reshape(cols+1,1) y = np.linspace(-8, 8, rows+1).reshape(1,rows+1) d = (x**2 + y**2) * 0.1 d2 = d ** 0.5 + 0.1  phi = np.arange(0, np.pi*2, np.pi/20.) z = np.sin(d[np.newaxis,...] + phi.reshape(phi.shape[0], 1, 1)) / d2[np.newaxis,...]  p4 = gl.GLSurfacePlotItem(x=x[:,0], y = y[0,:], shader="heightColor", computeNormals=False, smooth=False) p4.shader()["colorMap"] = np.array([0.2, 2, 0.5, 0.2, 1, 1, 0.2, 0, 2]) p4.translate(10, 10, 0) w.addItem(p4)  index = 0 def update():     global p4, z, index     index -= 1     p4.setData(z=z[index%z.shape[0]])      timer = QtCore.QTimer() timer.timeout.connect(update) timer.start(30)  if __name__ == "__main__":     QtGui.QApplication.instance().exec_()
  4.2 效果图:
  4.3 代码:from pyqtgraph.Qt import QtCore, QtGui import pyqtgraph.opengl as gl  app = QtGui.QApplication([]) w = gl.GLViewWidget() w.opts["distance"] = 20 w.show() w.setWindowTitle("pyqtgraph example: GLViewWidget")  ax = gl.GLAxisItem() ax.setSize(5,5,5) w.addItem(ax)  b = gl.GLBoxItem() w.addItem(b)  ax2 = gl.GLAxisItem() ax2.setParentItem(b)  b.translate(1,1,1)  if __name__ == "__main__":     #import sys     #if (sys.flags.interactive != 1) or not hasattr(QtCore, "PYQT_VERSION"):         #QtGui.QApplication.instance().exec_()     QtGui.QApplication.instance().exec_() #采用简化的,注意
  4.4 效果图:
  4.5 立方体代码:# -*- coding: utf-8 -*- #导出模块 from pyqtgraph.Qt import QtCore, QtGui import pyqtgraph as pg import pyqtgraph.opengl as gl import numpy as np #基本初始化定义 app = QtGui.QApplication([]) w = gl.GLViewWidget() w.show() w.setWindowTitle("pyqtgraph example: GLMeshItem") #标题名 w.setCameraPosition(distance=40) #设置摄像机位置  g = gl.GLGridItem() g.scale(2,2,1) w.addItem(g) ## Example 1: verts = np.array([     [0, 0, 0],     [2, 0, 0],     [1, 2, 0],     [1, 1, 1], ]) faces = np.array([     [0, 1, 2],     [0, 1, 3],     [0, 2, 3],     [1, 2, 3] ]) colors = np.array([     [1, 0, 0, 0.3],     [0, 1, 0, 0.3],     [0, 0, 1, 0.3],     [1, 1, 0, 0.3] ])  ## Mesh item will automatically compute face normals. m1 = gl.GLMeshItem(vertexes=verts, faces=faces, faceColors=colors, smooth=False) m1.translate(5, 5, 0) m1.setGLOptions("additive") w.addItem(m1)  ## Example 2: ## Array of vertex positions, three per face,3角体 verts = np.empty((36, 3, 3), dtype=np.float32) theta = np.linspace(0, 2*np.pi, 37)[:-1] verts[:,0] = np.vstack([2*np.cos(theta), 2*np.sin(theta), [0]*36]).T verts[:,1] = np.vstack([4*np.cos(theta+0.2), 4*np.sin(theta+0.2), [-1]*36]).T verts[:,2] = np.vstack([4*np.cos(theta-0.2), 4*np.sin(theta-0.2), [1]*36]).T      ## Colors are specified per-vertex colors = np.random.random(size=(verts.shape[0], 3, 4)) m2 = gl.GLMeshItem(vertexes=verts, vertexColors=colors, smooth=False, shader="balloon",                     drawEdges=True, edgeColor=(1, 1, 0, 1)) m2.translate(-5, 5, 0) w.addItem(m2)  ## Example 3: ## sphere,球 md = gl.MeshData.sphere(rows=10, cols=20) colors = np.ones((md.faceCount(), 4), dtype=float) colors[::2,0] = 0 colors[:,1] = np.linspace(0, 1, colors.shape[0]) md.setFaceColors(colors) m3 = gl.GLMeshItem(meshdata=md, smooth=False)#, shader="balloon") m3.translate(5, -5, 0) w.addItem(m3)  # Example 4: # wireframe,火焰 md = gl.MeshData.sphere(rows=4, cols=8) m4 = gl.GLMeshItem(meshdata=md, smooth=False, drawFaces=False, drawEdges=True, edgeColor=(1,1,1,1)) m4.translate(0,10,0) w.addItem(m4)  # Example 5: # cylinder,圆柱体 md = gl.MeshData.cylinder(rows=10, cols=20, radius=[1., 2.0], length=5.) md2 = gl.MeshData.cylinder(rows=10, cols=20, radius=[2., 0.5], length=10.) colors = np.ones((md.faceCount(), 4), dtype=float) colors[::2,0] = 0 colors[:,1] = np.linspace(0, 1, colors.shape[0]) md.setFaceColors(colors) m5 = gl.GLMeshItem(meshdata=md, smooth=True, drawEdges=True, edgeColor=(1,0,0,1), shader="balloon") colors = np.ones((md.faceCount(), 4), dtype=float) colors[::2,0] = 0 colors[:,1] = np.linspace(0, 1, colors.shape[0]) md2.setFaceColors(colors) m6 = gl.GLMeshItem(meshdata=md2, smooth=True, drawEdges=False, shader="balloon") m6.translate(0,0,7.5)  m6.rotate(0., 0, 1, 1) w.addItem(m5) w.addItem(m6)  QtGui.QApplication.instance().exec_()  #这种方法:注意有三种方法结尾
  4.6 效果图:
  以上是总体介绍,以后有空做逐个详细介绍。也可以自己学习。
  自己整理并分享出来,喜欢的就点赞、关注、转发和收藏。

学生名字太相似,两个月都没记住,老师很无奈就一大型偶像剧父母给孩子起名字往往会考虑多方面的因素,比如要好听好记好写寓意好等等。在取名时,有的父母倾向于求异,希望孩子的名字很特别有的父母会受到周围环境的影响,会从影视剧小说的人名中挑选一些北京怀柔教育小镇正面管教解读分享(65)北京怀柔教育小镇2022年04月17日,吴吉胜导读正面管教(65天)。导语改善关系唤醒生命状态为生命赋能传递正能量健全全人格培养全技能,让教育回归真实发生。第7章有效地运用鼓励二鼓给宝宝做抚触,会越摸越聪明?好处真不少,爸妈赶紧行动吧大家好,我是践行终身学习的西红柿妈妈!儿科学会斯特佳博士说宝宝有些部位要多触摸,通过触觉来激发宝宝的神经和感官发育,宝宝以后就会更聪明。抚触真的有这么神奇吗?还真别说,这事就发生在怀孕三十周不做饭,就是公主?贤惠是众多女性身上都有的优秀品质,一些女性即使怀孕后也坚持做饭做家务,十分勤劳。她们无疑是值得我们竖起大拇指的,但这是否代表所有女性都该向她们学习呢?怀孕不做饭就是公主?前几天,M小外孙5个月了今天小外孙悠悠正好5个月大了。时间过的挺快,从去年11月l7日初冬时节他出生,到现在春风送暖的晚春季节,他也长大了不少,身高体重都增加不少,宝妈宝爸和姥姥都很辛苦,我只是偶尔回去看儿童右下腹疼痛难忍,以为阑尾炎开腹手术,医生阑尾哪去了?如果所有的疾病都按照教科书来长,那就太好了!可惜女童,姓王,7岁,活泼可爱。这天,天太热了,小姑娘冰激凌可乐的一肚子猛吃,之后回家倒头就睡。下午,小姑娘便出现腹部隐约的疼痛,之后出孕期这么补充营养胎儿更健康,不盲目不跟风,还省了很多钱十月怀胎,一朝分娩!是每个准妈妈最难熬的等待,也是最难忘的瞬间,孕期10个月280天6720小时403200分钟24192000秒,分分秒秒都充满期待。也正是这份期待,让每个准妈妈分娩日记我是在412的时候剖腹产生下来的孩子。原以为会顺产,结果因为一些意外无奈剖腹。事情的经过是这样的我是406去办理的住院手续,41周那天做的OCT实验,上午做的过程用就有水流出来,医宝宝奶粉怎么选?学会看罐身市场上流通的奶粉品牌非常多,飞鹤君乐宝雀巢合生元等等,那么如何给自己的宝宝挑选一款奶粉呢?首先,我们得先认识奶粉,了解奶粉里面的配方,才知道自己想要的是什么?才知道什么奶粉的配方才感谢你成为我的孩子有的人一生坎坷,有的人一生富贵,而也有的人普普通通一辈子,我,属于平平淡淡过一生的类型,顺其自然的上学,工作,到了催婚的年纪,刚好遇到一个感觉还OK的人,直接从初次谈恋爱到了结婚,幼儿园小班,幼小衔接数感培养,训练题每日一题,尽量固定孩子的学习时间,帮助孩子养成自主练习的学习习惯。指导方法家长帮助读题,鼓励孩子独立思考作答2作答完毕后,进入我当老师环节,鼓励孩子完整讲述这道题,比如提问孩子你是
婆媳关系为什么不好?为了孩子不能妥协为什么媳妇和婆婆的关系不好现在的家长都很忙,每天除了工作还需要照顾宝贝,肯定是忙不过来的,所以,有些老人会主动选择带宝贝,不过也有很多父母觉得老人带宝贝是不靠谱的,大多数家长之所以冬季为什么要户外活动?宝妈赶快看看冬天给宝贝穿太多有很多害处冬天的天气越来越冷,不少新生儿家长怕小宝贝冻着,于是就给孩子打上了结结实实的蜡烛包,不过,有一些医生提醒家长,冬季给新生儿包裹得过于严实,会影响到新生儿的如何让孩子成为佼佼者?父母为什么要坚持这3条铁律科学喂养的重要性聪明的父母在养育孩子的过程中都是很明智的,知道科学喂养的重要性,我想育儿过程中,想要孩子长得好一定得是从小孩子的角度去考虑问题,比如你逼着他吃饭,他明明已经饱了,所全面二胎开放,高龄产妇的一些问题,女人了解一下随着女性的结婚和生育年龄的推迟,再加上二孩政策的实施,我国的高龄产妇人数也随之增长,很多女性开始被受难孕不孕等生育问题所困扰。高龄产妇在医学上是指年龄接近或者超过35岁的产妇,这部初生宝宝出现了问题?一定不能随意处理很多时候家长都会因为生宝宝初期出现的一些问题而过于焦虑,从而做一些不恰当的举措。有的妈妈刚生完小孩不会立刻有奶有些家长就会认为马上用奶粉补足会比较好,但其实这种方法是不太正确的,因二代人存在什么矛盾?孩子还是要精心教育的父母才是责任人一说到现在的教育孩子的问题,就真的是会有这样的家庭,一般都会选择是家里的老年人来帮忙带着孩子的,身边总会有一些年轻的父母真的是由于工作上的忙碌,根本就没有多余的时间去面对叛逆的青少年不要急!看看小编怎么说?家庭教育对孩子的作用和影响大家都知道,现在青少年的犯罪率越来越高,因此,这离不开父母的教育,所以说家庭教育是孩子成长当中十分关键的一环,决定了青少年的发展方向与前途。随着孩子慢慢的注意细节?宝宝才会变漂亮许多家长说自己的孩子不是很漂亮,可是其实许多孩子不那么漂亮并非天生的,而是错误的育儿方式造成的。今日就给大伙儿分享一些能让宝宝好看的方法。注意这些,宝宝会长的很漂亮,毕竟天下父母都6大新生儿睡眠常见现象,想让宝宝安心睡觉,宝妈必看作为宝妈,大家应该都知道睡眠对于宝宝的重要性,充足的睡眠可以促进宝宝生长发育,有益智促进智力发育的作用。而且宝宝可以在睡觉的时候储备能量来提供白天的能量消耗。相反,如果缺乏睡眠或睡头胎是女儿,考虑好这些再决定是否拼二胎随着二胎政策开放力度越来越大,我们身边很多头胎是女儿的家庭,开始了积极的备孕。很多家庭都想要再生下一个男孩子,用来凑成一个好字,可是现实真的会如我们所愿吗?如果你的第二胎又生下了一怎么才能培养有出息的孩子呢?很多人不知道这样做因为中国男主外,女主内的传统思想,爸爸作为主心骨都是以赚钱养家为主,而带宝宝,做家务的事情,都由妈妈来承担,相对于爸爸而言,所以妈妈和宝宝相处的时间明显多了很多。于是,很多人会有一