pyqtgraph数据可视化2:使用PyQtGraph绘制图形的6种方法(转载)
对于一个图形的绘制,在PyQtGraph中有很多中方法可以实现。比如可以直接使用PyQtGraph的plot()方法绘制,或者是创建一个网格窗口,再其中添加绘制图形等。下面我们就一一了解一下PyQtGraph的绘制图形方法。
首先利用numpy模块创建两个随机数组,用来作为图形绘制的数据:
import pyqtgraph as pg
import numpy as np
x = np.random.random(50)
a = np.random.random(8)
最简单直接的plot()
在引入pyqtgraph模块之后,直接使用其plot()方法就可以快速的绘制一个图形,代码如下所示。
def pg_plot():
app = pg.QtGui.QApplication([])
pg.plot(x,title='州的先生zmister.com PyQtGraph教程 - plot()方法')
app.exec()
我们在pyqtgraph模块的plot()方法中传入了数组x,并设置了其title参数,运行这个函数,得到的图形如下所示:
![](http://upload-images.jianshu.io/upload_images/38544-bb7e7bc113037ff2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
使用plot()方法在窗口中绘制多个线条
如果我们有多个数组,需要将所有的数组数据绘制在图形中,同样可以直接使用plot()方法,但是却不是像上一个例子中一样使用两次plot()方法,因为这样会生成两个图形窗口,代码如下所示:
def pg_plot():
app = pg.QtGui.QApplication([])
pg.plot(x,title='州的先生zmister.com PyQtGraph教程 - plot()方法 x数组')
pg.plot(a, title='州的先生zmister.com PyQtGraph教程 - plot()方法 a数组')
app.exec()
运行上面的函数,我们将会得到两个图形窗口,结果如下图所示:
![](http://upload-images.jianshu.io/upload_images/38544-a5977974bff24829.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
如果需要使用plot()方法在同一个图形中绘制多个数据,需要先将pyqtgraph的plot()方法实例化,然后再使用实例化后的plot的plot()方法进行图形绘制,代码如下所示:
def pg_plot_add():
plot = pg.plot(title='州的先生zmister.com PyQtGraph教程 - plot()方法绘制两条线')
plot.plot(x)
plot.plot(a,pen='r')
pg.QtGui.QGuiApplication.exec()
运行上述函数,最后得到的图形窗口如下图所示:
![](http://upload-images.jianshu.io/upload_images/38544-d9b3a5c11ee4f689.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
通过GraphicsWindow方法绘制图形
通过pyqtgraph模块的GraphicsWindow方法,我们可以创建一个空的图形窗口,然后使用其addplot()方法添加图形。代码如下所示:
def pg_windows_addplot():
win = pg.GraphicsWindow(title="州的先生zmister.com PyQtGraph教程")
plot = win.addPlot(title='窗口绘制图形')
plot.plot(x)
pg.QtGui.QApplication.exec()
运行上述函数,得到的会是一个有图形窗口名和图形名称的图形,结果如下图所示:
![](http://upload-images.jianshu.io/upload_images/38544-7087dada4e77bd1f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
在GraphicsWindow方法中添加子图
如同在GraphicsWindow中创建一个图形,继续使用addplot()方法,可以在图形窗口中继续添加一个子图,代码如下所示:
def pg_windows_addplot():
win = pg.GraphicsWindow(title="州的先生zmister.com PyQtGraph教程")
plot = win.addPlot(title='窗口绘制图形')
plot.plot(x)
plot2 = win.addPlot(title='绘制子图')
plot2.plot(a)
pg.QtGui.QApplication.exec()
运行上述函数,会得到一个包含两个子图的图形窗口,结果如下所示:
![](http://upload-images.jianshu.io/upload_images/38544-61956bd21ec8a1bc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
通过GraphicsLayout图形层方法绘制图形
通过GraphicsLayout图形层方法绘制图形的过程相较于前述的方法,稍显复杂。
首先通过实例化pyqtgraph的GraphicsView()方法,创建一个图形视图;
然后通过实例化pyqtgraph的GraphicsLayout()方法,创建一个图形层;
再设置图形视图的中心层为刚刚创建的图形层,并设置显示图形视图。
最后使用图形层的addplot()方法添加一个图形,再将使用图形的plot()方法将图形绘制出来。
代码如下所示:
def pg_graphicsLayout_plot():
app = pg.QtGui.QApplication([])
view = pg.GraphicsView()
l = pg.GraphicsLayout()
view.setCentralItem(l)
view.show()
p1 = l.addPlot(title='州的先生zmister.com PyQtGraph教程 - 通过图形层绘制图形')
p1.plot(x)
app.exec()
运行上述函数,得到的图形窗口如下所示:
![](http://upload-images.jianshu.io/upload_images/38544-2cfcfab4bfec61a4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
使用PlotWidget绘制图形
使用pyqtgraph的PlotWidget方法绘制图形与直接使用plot()方法绘制图形有些许类似,代码如下所示:
def pg_plotwidget_plot():
app = pg.QtGui.QApplication([])
pw = pg.PlotWidget(title='州的先生zmister.com PyQtGraph教程 - 通过图形部件绘制图形')
pw.plot(x)
pw.show()
app.exec()
运行上述程序,得到的图形窗口如下所示:
![](http://upload-images.jianshu.io/upload_images/38544-5a441ed4007a9508.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
通过PlotItem方法绘制图形
对PlotItem方法的使用与图形层GraphicsLayout方法的使用基本一致,代码如下所示:
def pg_plotitem_plot():
app = pg.QtGui.QApplication([])
xx = pg.GraphicsView()
plot = pg.PlotItem(title='州的先生zmister.com PyQtGraph教程 - 通过图形部件绘制图形')
plot.plot(x)
xx.setCentralWidget(plot)
xx.show()
app.exec()
运行上述函数,得到的图形窗口如下所示:
![](http://upload-images.jianshu.io/upload_images/38544-952a231dd76e5a3c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
最后
上面介绍了6种在pyqtgraph中绘制图形的方法,不知道各位学会了没有:)
文章版权所有:州的先生博客,转载必须保留出处及原文链接
# coding:utf-8
import pyqtgraph as pg
import numpy as np
x = np.random.random(50)
a = np.random.random(8)
def pg_plot():
app = pg.QtGui.QApplication([])
pg.plot(x,title='州的先生zmister.com PyQtGraph教程 - plot()方法')
app.exec()
def pg_plot1():
app = pg.QtGui.QApplication([])
pg.plot(x,title='州的先生zmister.com PyQtGraph教程 - plot()方法 x数组')
pg.plot(a, title='州的先生zmister.com PyQtGraph教程 - plot()方法 a数组')
app.exec()
def pg_plot_add():
plot = pg.plot(title='州的先生zmister.com PyQtGraph教程 - plot()方法绘制两条线')
plot.plot(x)
plot.plot(a,pen='r')
pg.QtGui.QGuiApplication.exec()
def pg_windows_addplot():
win = pg.GraphicsWindow(title="州的先生zmister.com PyQtGraph教程")
plot = win.addPlot(title='窗口绘制图形')
plot.plot(x)
pg.QtGui.QApplication.exec()
def pg_windows_addplot1():
win = pg.GraphicsWindow(title="州的先生zmister.com PyQtGraph教程")
plot = win.addPlot(title='窗口绘制图形')
plot.plot(x)
plot2 = win.addPlot(title='绘制子图')
plot2.plot(a)
pg.QtGui.QApplication.exec()
def pg_graphicsLayout_plot():
app = pg.QtGui.QApplication([])
view = pg.GraphicsView()
l = pg.GraphicsLayout()
view.setCentralItem(l)
view.show()
p1 = l.addPlot(title='州的先生zmister.com PyQtGraph教程 - 通过图形层绘制图形')
p1.plot(x)
app.exec()
def pg_plotwidget_plot():
app = pg.QtGui.QApplication([])
pw = pg.PlotWidget(title='州的先生zmister.com PyQtGraph教程 - 通过图形部件绘制图形')
pw.plot(x)
pw.show()
app.exec()
def pg_plotitem_plot():
app = pg.QtGui.QApplication([])
xx = pg.GraphicsView()
plot = pg.PlotItem(title='州的先生zmister.com PyQtGraph教程 - 通过图形部件绘制图形')
plot.plot(x)
xx.setCentralWidget(plot)
xx.show()
app.exec_()
if __name__ == '__main__':
pg_plotwidget_plot()