Python 如何在调用plt.show之前创建多个图形而不显示它们?
我希望能够使用不同的图形独立创建多个图形,并选择它们是显示在GUI中,还是使用Python 如何在调用plt.show之前创建多个图形而不显示它们?,python,matplotlib,figure,Python,Matplotlib,Figure,我希望能够使用不同的图形独立创建多个图形,并选择它们是显示在GUI中,还是使用plt.savefig()函数保存。(大多数情况下,我想我希望显示并保存它们,或者只保存一个) 我正在尝试创建一个名为plotData(channel,refFile)的函数,该函数通过几个参数,创建一个matplotlib图形,并将一些数据打印到其中。在调用另一个函数showPlot(channel)之前,我不希望显示该图,该函数在调用时将显示相应的图 不幸的是,每当我使用plt.figure()函数时,它都会自动显
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')
另外,如何保存特定的绘图?我不介意在创建同一个绘图之前,我总是必须调用save figure plot函数。IIUC,您可以在开始时使用
plt.ioff()
关闭交互模式
完成此操作后,您可以在通过调用
plt.show()。然后您可以通过plt.close()
单独关闭它,如果它在之前显示或以不可见的方式保存到文件中(或者甚至创建时没有显示或保存…)谢谢!你知道有没有一种方法可以让脚本在结束前暂停,直到数字结束?我很确定这是我平常看到的行为。我在pytest脚本中绘制这些图形,我不知道这是否会改变情况。我曾尝试在最后用plt.ion()重新打开交互模式,但没有成功。@genericpubleturtle我想我不太明白您想要实现什么以及如何实现。到目前为止,我还没有使用pytest,但我怀疑这是否会影响您的目标。但是,您是否在像Spyder这样的IDE中工作?例如,如果我在Spyder中启动脚本创建一些(最终看不见的)人物,我仍然可以在相关控制台中访问它们。我正在visual studio community edition 2017中工作。我基本上希望脚本暂停,直到图形关闭。我认为plot.show(block=True)
似乎可以暂停脚本,但当我关闭窗口时它崩溃了。但是,当我从命令行运行它时,它会按预期工作。似乎是visual studio的一个问题。