目前我正在使用matplotlib
绘制多个numpy
数组(或列表)的数据。这些对应于大约3000个图。情节是时间序列。我的问题是,当这些列表变得太大并且有大量数据时,matplotlib非常慢。我读到pyqtgraph
可以快速绘制,但我的问题是:
你可以使用pyqtgraph绘制数据而不产生pyqt
窗口,而是直接将它们保存到文件中吗? Matplotlib有一个更改后端的选项,因此它不会产生窗口,而只是创建文件,pyqtgraph有类似的东西吗?
另外你认为,对于我的问题,pyqtgraph是正确的方法吗?我看到了很多用于实时绘制流数据的方法,但我想要做的并不涉及实时流数据。我应该使用其他东西为我的所有数据创建图吗?
如果要保存绘图的图像,则无需显示窗口,以下示例中:
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
参考文献: