Как создать несколько фигур, не показывая их, пока не будет вызван plt.show? - PullRequest
1 голос
/ 06 апреля 2019

Я бы хотел иметь возможность независимо создавать несколько фигур с разными графиками и выбирать, будут ли они отображаться в графическом интерфейсе и вместо этого сохраняться с помощью функции 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 Ответ

2 голосов
/ 07 апреля 2019

IIUC, вы можете использовать plt.ioff() изначально для отключения интерактивного режима.

Это сделано, вы можете plt.savefig() свою фигуру после того, как вы создали ее с вызовом plt.show() до или без нее. И затем вы можете закрыть его с помощью plt.close(), независимо от того, было ли оно показано ранее или невидимо сохранено в файл (или даже создано без отображения или сохранения ...)

...