用于绘制多个数据列表的pyqtgraph

时间:2017-12-29 17:12:28

标签: python performance plot pyqtgraph

目前我使用window.addEventListener("beforeinstallprompt", (ev) => { if (isStandalone()) { // PWA already installed. event.preventDefault(); return false; } else { // PWA not installed. } }); function isStandalone() { // Check if device supports service workers if (!('serviceWorker' in window.navigator)) return false; // Check for Android if (window.matchMedia('(display-mode: standalone)').matches) return true; // Check for iOS if (window.navigator["standalone"] == true) return true; return false; } 绘制多个matplotlib数组(或列表)数据。这些对应于大约3000个图。情节是时间序列。 我的问题是,当这些列表变得太大并且有大量数据时,matplotlib非常慢。我读到numpy可以快速绘制,但我的问题是:

你可以使用pyqtgraph绘制数据而不产生pyqtgraph窗口,而是直接将它们保存到文件中吗? Matplotlib有一个更改后端的选项,因此它不会产生窗口,而只是创建文件,pyqtgraph有类似的内容吗?

你也认为,对于我的问题,pyqtgraph是正确的方法吗?我看到了很多用于实时绘制流数据的方法,但我想要做的并不涉及实时流数据。我应该使用其他东西为我的所有数据创建图吗?

2 个答案:

答案 0 :(得分: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')

虽然该库有错误,但解决方案很简单,您必须转到文件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)

<强> fileName.png

enter image description here

<强>参考文献:

答案 1 :(得分:0)

要关闭默认情况下打开的窗口,可以添加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