【发布时间】:2019-02-14 10:23:10
【问题描述】:
使用 PyQtGraph,我想在一个图表中生成三个子图并将此图表导出到文件中。
因为我会重复很多次,所以它对性能非常敏感。因此我不需要将图表带到屏幕上。
下面的代码在屏幕上显示了三个子图,但导出到文件目前无法正常工作。我必须将什么作为参数传递给ImageExporter?
(如果可能的话:我该怎么做才能只进行导出而不将图表带到屏幕上?)
from pyqtgraph.Qt import QtGui, QtCore
import pyqtgraph as pg
import pyqtgraph.exporters
import numpy as np
print("pyqtgraph.__version__:", pyqtgraph.__version__)
app = QtGui.QApplication([])
view = pg.GraphicsView()
l = pg.GraphicsLayout(border=(100, 100, 100))
view.setCentralItem(l)
view.show()
view.resize(800, 600)
# l.addLayout(colspan=1, border=(50, 0, 0))
p1 = l.addPlot()
l.nextRow()
p2 = l.addPlot()
l.nextRow()
p3 = l.addPlot()
p1.hideAxis("left")
p1.hideAxis("bottom")
p2.hideAxis("left")
p2.hideAxis("bottom")
p3.hideAxis("left")
p3.hideAxis("bottom")
p1.plot([1, 3, 2, 4, 3, 5])
p2.plot([1, 3, 2, 4, 3, 5])
p3.plot([1, 3, 2, 4, 3, 5])
# exporter = pg.exporters.ImageExporter(plt.plotItem)
exporter = pg.exporters.ImageExporter(view.currentItem)
# set export parameters if needed
exporter.parameters()['width'] = 100 # (note this also affects height parameter)
# save to file
exporter.export('fileName.png')
结果:
pyqtgraph.__version__: 0.11.0.dev0+g9aaae8d
....
File "/home/user/PycharmProjects/0480_all_integrated/attic3.py", line 36, in <module>
exporter = pg.exporters.ImageExporter(view.currentItem)
File "/home/user/anaconda3/lib/python3.6/site-packages/pyqtgraph/exporters/ImageExporter.py", line 15, in __init__
tr = self.getTargetRect()
File "/home/user/anaconda3/lib/python3.6/site-packages/pyqtgraph/exporters/Exporter.py", line 96, in getTargetRect
return self.item.mapRectToDevice(self.item.boundingRect())
AttributeError: 'NoneType' object has no attribute 'mapRectToDevice'
【问题讨论】: