pyqtgraph 用于绘制多个数据列表
Posted
技术标签:
【中文标题】pyqtgraph 用于绘制多个数据列表【英文标题】:pyqtgraph for plotting multiple data lists 【发布时间】:2018-06-10 02:16:43 【问题描述】:目前我正在使用matplotlib
绘制多个numpy
数据数组(或列表)。这些对应于大约 3000 个地块。这些图是时间序列。
我的问题是,当这些列表因大量数据而变得太大时,matplotlib 会非常慢。我读到pyqtgraph
的绘图速度非常快,但我的问题是:
您可以使用 pyqtgraph 绘制数据而不生成 pyqt
窗口,而是直接将它们保存到文件中吗? Matplotlib 有一个更改后端的选项,因此它不会产生窗口,而只是创建文件,pyqtgraph 有类似的东西吗?
您还认为,对于我的问题,pyqtgraph 是正确的方法吗?我经常看到实时绘制流数据,但我想做的不涉及实时流数据。我应该使用其他东西来为我的所有数据创建图表吗?
【问题讨论】:
什么意思:直接保存到文件中? 因此,当 pyqtgraph 绘制某些东西时,它会生成一个窗口并向您显示绘制在 x 和 y 轴上的数据。我想要的是不创建此窗口,而只是将在该窗口中显示的图像保存到文件中。由于我有很多要创建的绘图并且我还想保存最终的图像文件,因此生成此窗口对我来说并不是一个真正的选择。 你有很多问题,你必须知道SO是每个帖子一个问题的地方,所以创建按钮说的是,而不是说s. 也许你没有正确理解我在问什么。我的问题是一个,并且是:pyqtgraph 可以在不使用生成的窗口的情况下创建多个图吗? 好的,现在我明白了,你可以展示一个简单的例子来说明你是如何在 matplotlib 中做到这一点的,我将使用这个例子在 pyqtgraph 中做到这一点;P 【参考方案1】:如果要保存绘图的图像,则不需要显示窗口,示例如下:
import pyqtgraph as pg
import pyqtgraph.exporters
plt = pg.plot([1, 2, 3, 4, 5], [2, 5, 2, 5, 2])
exporter = pg.exporters.ImageExporter(plt.plotItem)
exporter.parameters()['width'] = 640
exporter.export('fileName.png')
虽然那个库有bug,但是解决方法很简单,一定要到文件pyqtgraph/exporters/ImageExporter.py
pyqtgraph
|
...
├── exporters
│ ├── ...
│ ├── ImageExporter.py
... ...
并更改第 70 行:
bg = np.empty((self.params['width'], self.params['height'], 4), dtype=np.ubyte)
到:
bg = np.empty((int(self.params['width']), int(self.params['height']), 4), dtype=np.ubyte)
文件名.png
参考资料:
http://www.pyqtgraph.org/documentation/exporting.html【讨论】:
谢谢,试试看。【参考方案2】:要关闭默认打开的窗口,您可以添加plt.win.close()
,如下所示:
import pyqtgraph as pg
import pyqtgraph.exporters
plt = pg.plot([1, 4, 3, 9, 5], [2, 3, 2, 1, 0])
plt.win.close()
exporter = pg.exporters.ImageExporter(plt.plotItem)
exporter.parameters()['width'] = 640
exporter.export('fileName.png')
参考资料: http://www.pyqtgraph.org/documentation/exporting.html
【讨论】:
以上是关于pyqtgraph 用于绘制多个数据列表的主要内容,如果未能解决你的问题,请参考以下文章