2017-02-02 8 views
2

Я написал простую функцию Python для создания фигуры matplotlib. Я вызываю plotData несколько раз из отдельного сценария, но каждый раз он генерирует новый график. Я хотел бы всегда иметь только один сюжет с чем-то вроде subplot.clear(), чтобы очистить подзаголовки между изменениями данных.Очистить фигурные подзаголовки matplotlib python

Мне нужен способ идентифицировать фигуру извне plotData, чтобы я мог очистить графики для новых данных. Какой был бы лучший способ сделать это?

## Plot Data Function 
def plotData(self): 

     # Setup figure to hold subplots 
     f = Figure(figsize=(10,8), dpi=100) 

     # Setup subplots 
     subplot1=f.add_subplot(2,1,1) 
     subplot2=f.add_subplot(2,1,2) 

     # Show plots 
     dataPlot = FigureCanvasTkAgg(f, master=app) 
     dataPlot.show() 
     dataPlot.get_tk_widget().pack(side=RIGHT, fill=BOTH, expand=1) 

ответ

5

я не уверен, если я полностью понимаю, где проблема. Если вы хотите обновить сюжет, вам понадобится функция, которая сделает это. Я бы назвал эту функцию plotData. До этого вам также нужно настроить график. Это то, что вы сейчас имеете в plotData. Итак, переименуем это на generatePlot.

class SomeClass(): 
    ... 

    def generatePlot(self): 
     # Setup figure to hold subplots 
     f = Figure(figsize=(10,8), dpi=100) 

     # Setup subplots 
     self.subplot1=f.add_subplot(2,1,1) 
     self.subplot2=f.add_subplot(2,1,2) 

     # Show plots 
     dataPlot = FigureCanvasTkAgg(f, master=app) 
     dataPlot.show() 
     dataPlot.get_tk_widget().pack(side=RIGHT, fill=BOTH, expand=1) 

    ## Plot Data Function 
    def plotData(self, data, otherdata): 
     #clear subplots 
     self.subplot1.cla() 
     self.subplot2.cla() 
     #plot new data to the same axes 
     self.subplot1.plot(data) 
     self.subplot2.plot(otherdata) 

Теперь вам нужно позвонить generatePlot только один раз в начале. После этого вы можете обновлять свой сюжет новыми данными всякий раз, когда захотите.

3

вы можете использовать

subplot.cla() # which clears data but not axes 
subplot.clf() # which clears data and axes 
+0

Кроме того, если вы определяете свою фигуру и подзаголовки как self.fig и self.subplots и т. Д. Затем вы можете получить к ним доступ из экземпляра класса, частью которого они являются. –

+0

Как бы вы искали фигуру, если она определена самостоятельно? Его нужно каким-то образом переместить до применения модифицирующего кода. –