前提・実現したいこと
Pythonのtkinter上でグラフが更新できません。
csvファイルを読み込んでグラフを表示させて、ボタンを押すたびに指定したcsvを読み込みグラフを表示させたいのですが、画面が更新されません。
発生している問題・エラーメッセージ
グラフが更新されない。
該当のソースコード
Python
1import tkinter as tk 2import matplotlib.pyplot as plt 3from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg 4import pandas as pd 5 6# プロットをする関数 7def plot_wave(x, y): 8 # Figureインスタンスを生成する。 9 fig = plt.Figure() 10 # Axesを作る。グラフは分割しない。 11 ax1 = fig.add_subplot(111) 12 # グラフデータの作成(プロットする) 13 ax1.plot(x, y) 14 #figを戻り値として返す 15 return fig 16 17def button1(): 18 19 df=pd.read_csv("trx.csv", names=["day","number"]) 20 x=list(df['day'])#x軸のデータを配列で 21 y=list(df['number'])#y軸のデータを配列で 22 fig = plot_wave(x, y) 23 canvas = FigureCanvasTkAgg(fig, frame_2) 24 canvas.draw() 25 canvas.get_tk_widget().pack(fill='x',expand=1) 26 27 28# Windowの設定 29root = tk.Tk() 30root.title("A") 31root.geometry("1350x500") 32 33# Frameの設定 34#ボタン用のframe(枠組み)を作成する。1はボタン用、2はグラフ用 35frame_1 = tk.Frame(root) 36frame_2 = tk.Frame(root) 37 38# widgetの設定 39btn1 = tk.Button(frame_1, text='Update', command=button1) 40fig = plot_wave(0, 0) 41canvas = FigureCanvasTkAgg(fig, frame_2) 42canvas.draw() 43canvas.get_tk_widget().pack(fill='x',expand=1) 44 45# widgetの配置 46frame_1.pack(fill='both',side='bottom') 47frame_2.pack(fill='x',side='top',expand=1) 48btn1.pack() 49 50 51root.mainloop()
試したこと
matplotlib.pyplot.cla()を試したがなにも変わりませんでした。
補足情報(FW/ツールのバージョンなど)
環境:Spyder(Python3.8)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/31 05:32