Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在调用plt.show之前创建多个图形而不显示它们?_Python_Matplotlib_Figure - Fatal编程技术网

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

Python 如何在调用plt.show之前创建多个图形而不显示它们?,python,matplotlib,figure,Python,Matplotlib,Figure,我希望能够使用不同的图形独立创建多个图形,并选择它们是显示在GUI中,还是使用plt.savefig()函数保存。(大多数情况下,我想我希望显示并保存它们,或者只保存一个) 我正在尝试创建一个名为plotData(channel,refFile)的函数,该函数通过几个参数,创建一个matplotlib图形,并将一些数据打印到其中。在调用另一个函数showPlot(channel)之前,我不希望显示该图,该函数在调用时将显示相应的图 不幸的是,每当我使用plt.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')

另外,如何保存特定的绘图?我不介意在创建同一个绘图之前,我总是必须调用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的一个问题。