禁用pyqtgraph绘图窗口

时间:2017-12-31 12:08:20

标签: python plot backend pyqtgraph

作为我的这个问题的延续: pyqtgraph for plotting multiple data lists

我设法使用pyqtgraph将我的绘图导出到文件中。但我仍然得到了pyqtgraph产生的窗口,以便尝试在那里创建情节。这个窗口现在什么也没显示,它是空的和白色的。当我使用普通的python控制台时,一段时间后这个窗口消失了,但如果我使用Ipython,窗口会显示“没有响应”,当我关闭它时,Ipython说“内核死了,重启”。

是否有办法完全禁用此pyqtgraph窗口并仅使用输出文件创建绘图,以使其正常工作而不出错?

我曾经使用matplotlib(它弹出相同的窗口,但是如果你使用命令matplotlib.use('Agg'))来改变后端,那么窗口就会停止弹出。

1 个答案:

答案 0 :(得分:1)

哦,我...我想通了!关于SO的第一个答案,请不要对我太苛刻。

首先,确保要在类的构造函数( init 函数)中创建pyqtgraph图。在此调用一次并立即将其隐藏(对我来说这是很复杂的部分)。

这是示例代码:

import numpy as np
import pyqtgraph as pg
import pyqtgraph.exporters


class MyPlotClass():
    def __init__(self):
        self.windowplt = pg.plot()
        self.windowplt.win.hide()

    def savePlots(self):
        x = np.arange(0, 256)
        y = np.arange(0, 256)
        self.windowplt.plot(x, y)
        exporter = pg.exporters.ImageExporter(self.windowplt.plotItem)
        exporter.params.param('width').setValue(256, blockSignal=exporter.widthChanged)
        exporter.params.param('height').setValue(256, blockSignal=exporter.heightChanged)
        for i in np.arange(0,10):
            exporter.export('./fileName' + str(i) +  '.png')
            print(i)

if __name__ == "__main__":
    saveMyFiles = MyPlotClass()
    saveMyFiles.savePlots()

只有一个窗口会在拍摄期间显示并立即隐藏。 我知道您的问题很旧,但将来可能对任何人都有帮助。我现在整天都在寻找解决方案。

如上一个线程pyqtgraph for plotting multiple data lists中所述,ImageExporter.py错误仍然存​​在。想要更改pyqtgraph库的代码,您可以通过自己设置width和height来解决它(如上述代码)。

exporter.params.param('width').setValue(256, blockSignal=exporter.widthChanged)
exporter.params.param('height').setValue(256, blockSignal=exporter.heightChanged)