如何在调用plt.show之前创建多个数字而不显示它们?

问题描述 投票:1回答:1

我希望能够独立创建具有不同图形的多个图形,并选择它们是否将显示在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')

另外我怎么能保存一个特定的情节呢?我不介意在创建相同的图之前我是否总是要简单地调用保存图形图功能。

python matplotlib figure
1个回答
2
投票

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

这样做了,你创建它之前你可以自由地使用plt.savefig()你的数字,在它之前或之前调用plt.show()。然后你可以通过plt.close()关闭它,如果它之前显示或无形地保存到文件中(或者甚至创建时没有显示或保存......)。

© www.soinside.com 2019 - 2024. All rights reserved.