如何创建多个图形而不显示它们,直到调用plt.show为止?

时间:2019-04-06 19:19:06

标签: python matplotlib figure

我希望能够独立地创建具有不同图形的多个图形,然后选择将它们显示在GUI中还是使用plt.savefig()函数进行保存。 (我想大多数时候我希望它们全部显示并保存,或者不希望它们全部保存)

我正在尝试创建一个名为plotData(channel, refFile)的函数,该函数传递了几个参数,并创建了matplotlib图形并为其绘制了一些数据。我不希望在调用另一个函数showPlot(channel)时显示该图,该函数将在调用时显示相应的图。

不幸的是,每当我使用plt.figure()函数时,它都会自动显示该图。我从类似的问题中看到了一些答案,人们尝试使用plt.figure(visible=False)plt.figure('visibility', 'off')之类的东西,但这些都不适合我。

def plotData(self, chan, refFile):

    #create figure without showing the gui window
    self.figure[chan-1]=plt.figure()

    #plot data to graph
    sigPlot, =plt.plot(self.time[chan-1],self.yAxis[chan-1], label='Measured Signal')
    refPlot,= plt.plot(self.time[chan-1],self.refSig[chan-1], label='Reference Signal')
    plt.legend(handles=[sigPlot, refPlot])

def showPlot(self,chan):
    self.figure[chan-1].show()


def savePlot(self, filename):
    plt.savefig(filename, bbox_inches='tight')

我该如何保存特定情节?我不介意在创建相同图形之前是否总是必须简单地调用保存图形图形功能。

1 个答案:

答案 0 :(得分:2)

IIUC,您可以最初使用plt.ioff()来关闭交互模式。

完成此操作后,创建图形后,您可以自由地plt.savefig()通过调用plt.show()来调用它,也可以不使用它。然后,您可以通过plt.close()单独关闭它,如果它在文件之前显示过或不可见地保存到文件中(甚至创建时都没有显示或保存...)