2017-08-22 13 views
0

tkinterプログラムに埋め込まれているmatplotlib棒グラフをクリアするためにどの方法を使用すべきか分かりません。tkinterで埋め込みマットplotlib棒グラフをクリアするにはどうしたらいいですか?

私はキャンバスを取り除くことに焦点を当てるべきですか、plt.claまたはplt.clf()を使用することに焦点を合わせるべきですか?私はPycharmを使用しているので、私は両方を試してみました。そして、IDEは私が使用する他の方法を示していません。

私は以下の私のコードが表示されます。

def show_graph(self): 

    self.infoLabel.config(text="") 

    c.execute("SELECT * FROM " + self.trackName.get() + " WHERE Year_Of_Event = ? AND Athlete_Year_Group = ? " 
                 "ORDER BY ATHLETE_TIME ASC", (self.eventYear.get(), 
                         self.yearGroup.get())) 
    self.athleteData = c.fetchall() 

    if self.athleteData is None: 
     self.infoLabel.configure(text="There are no records for the event in this year for this year group.") 
    else: 
     for self.item in self.athleteData: 
      self.athlete = self.item 
      self.x.append(self.athlete[1]) 
      self.truncatedTime = str(self.athlete[3]).replace((self.athlete[3])[5:], "") 
      self.y.append(float(self.truncatedTime)) 
      self.text += (self.athlete[1]+" ran the "+self.trackName.get()+" in "+self.athlete[3]+" and is from the" 
          " house, "+self.athlete[4]+"\n") 
      self.infoLabel.configure(text=self.text) 

    self.numOfValues = len(self.x) 
    self.ind = numpy.arange(self.numOfValues) 

    self.colorChoice = random.choice(["r", "y", "b", "g", "w", "k", "m", "c"]) 
    self.rect = self.ax.bar(self.ind, self.y, width=self.width, color=self.colorChoice) 

    # add some text for labels, title and axes ticks 
    self.ax.set_ylabel('Time') 
    self.ax.set_title('Times under which athletes ran a race.') 
    self.ax.set_xticks(self.ind) 
    self.ax.set_xticklabels(self.x) 

    def label(bars): 
     """ 
     Attach a text label in each bar displaying its height 
     """ 
     for self.rect in bars: 
      height = self.rect.get_height() 
      self.ax.text(self.rect.get_x() + self.rect.get_width()/2., 0.5 * height, int(height), 
         ha='center', va='bottom') 

    label(self.rect) 

    self.canvas.show() 
    self.canvas.get_tk_widget().pack(side=tkinter.BOTTOM, fill="x") 

    self.canvas._tkcanvas.pack(side=tkinter.BOTTOM, fill="x") 

def clear_all(self): 
    self.infoLabel.configure(text="") 

私はclear_all機能は、私は、チャート上の異なるデータをプロットすることができますので、棒グラフをクリアコードを運ぶようにそれを作りたいです。

私はこれについてどうすればいいのか分かりません。どんな助力も非常に感謝しています。ありがとうございました。あなたは、あなたはまだリスト内のデータを持っている、あなたは再びそれらを描くためのプロット(a.clear()/plt.clf()/plt.cla())をクリアした後self.xList1とself.yList1

self.xList1 = [] 
self.yList1 = [] 

からデータを削除する必要が明確なグラフに

+0

[mcve]を読んでみてください。 – ImportanceOfBeingErnest

答えて

0

+0

あなたのお時間をいただきありがとうございます。しかし、それを試みると、グラフはまだ前のデータにデータをプロットしています。私が必要とするのは、プロットをクリアすることです。私は図を使用していないので、なぜa.clear()/ plt.clf()/ plt.cla()を使用するのが難しいのですか。 – user8254375

関連する問題