質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

0回答

1018閲覧

Raspberry Pi3でmatplotlib、tkinterを使用してリアルタイムグラフを表示

ooooo123

総合スコア0

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

0クリップ

投稿2020/05/28 01:49

前提・実現したいこと

Raspberry Pi3でmatplotlib、tkinterを使用してリアルタイムグラフを表示させようとしています。
しかしグラフが更新されません。何が間違えているかわかりません。

発生している問題・エラーメッセージ

エラー等は出ていません。

該当のソースコード

Python

1try: 2 import Tkinter as tk 3except: 4 import tkinter as tk 5 6import tkinter 7 8from matplotlib.backends.backend_tkagg import ( 9 FigureCanvasTkAgg, NavigationToolbar2Tk) 10from matplotlib.figure import Figure 11import matplotlib.animation as animation 12 13import numpy as np 14 15SC_SIZE_W = 800 #画面の全体の大きさ 16SC_SIZE_H = 600 #画面の全体の大きさ 17TOP_LABEL_X = 550-200 18TOP_LABEL_Y = 50-30 19TOP_BTN1_X = 520-250 #Start page button1 20TOP_BTN1_Y = 90-30 21TOP_BTN2_X = 620-200 #Start page button2 22TOP_BTN2_Y = 90-30 23TOP_BTN3_X = 560-200 #Start page button2 24TOP_BTN3_Y = 130-30 25TOP_BTN4_X = 510-200 #Start page button2 26TOP_BTN4_Y = 170-30 27TOP_BTN5_X = 582-200 #Start page button2 28TOP_BTN5_Y = 210-30 29TOP_CNT_X = 480-200 30TOP_CNT_Y = 400-100 31 32line = 0 33x = np.arange(0, 3, 0.01) # x軸(固定の値) 34 35class SampleApp(tk.Tk): 36 def __init__(self): 37 tk.Tk.__init__(self) 38 self._frame = None 39 self.geometry("600x400") 40 self.switch_frame(StartPage) 41 42 def switch_frame(self, frame_class): 43 new_frame = frame_class(self) 44 if self._frame is not None: 45 self._frame.destroy() 46 self._frame = new_frame 47 self._frame.pack() 48 49class StartPage(tk.Frame): 50 def __init__(self, master): 51 global line 52 global x 53 tk.Frame.__init__(self, master) 54 tk.Label(self, text="Start page", font=('Helvetica', 18, "bold")).pack(side="top", fill="x", pady=5) 55 tk.Button(self, text="Go to page one", 56 command=lambda: master.switch_frame(PageOne)).pack() 57 tk.Button(self, text="Go to page two", 58 command=lambda: master.switch_frame(PageTwo)).pack() 59 60 61 fig = Figure() 62 # FuncAnimationより前に呼ぶ必要がある 63 canvas = FigureCanvasTkAgg(fig, self) # A tk.DrawingArea. 64 65 x = np.arange(0, 3, 0.01) # x軸(固定の値) 66 l = np.arange(0, 8, 0.01) # 表示期間(FuncAnimationで指定する関数の引数になる) 67 plt = fig.add_subplot(111) 68 plt.set_ylim([-1.1, 1.1]) 69 line, = plt.plot(x, np.sin(x)) 70 71 ani = animation.FuncAnimation(fig, self.animate, l, 72 init_func=self.init, interval=10, blit=True, 73 ) 74 75 toolbar = NavigationToolbar2Tk(canvas, self) 76 canvas.get_tk_widget().pack() 77 78 def init(self): # only required for blitting to give a clean slate. 79 global line 80 line.set_ydata(np.sin(x)) 81 return line, 82 83 84 def animate(self,i): 85 global line 86 line.set_ydata(np.sin(x + i)) # update the data. 87 return line, 88 89class PageOne(tk.Frame): 90 def __init__(self, master): 91 tk.Frame.__init__(self, master) 92 tk.Frame.configure(self,bg='blue') 93 tk.Label(self, text="Page one", font=('Helvetica', 18, "bold")).pack(side="top", fill="x", pady=5) 94 tk.Button(self, text="Go back to start page", 95 command=lambda: master.switch_frame(StartPage)).pack() 96 97class PageTwo(tk.Frame): 98 def __init__(self, master): 99 tk.Frame.__init__(self, master) 100 tk.Frame.configure(self,bg='red') 101 tk.Label(self, text="Page two", font=('Helvetica', 18, "bold")).pack(side="top", fill="x", pady=5) 102 tk.Button(self, text="Go back to start page", 103 command=lambda: master.switch_frame(StartPage)).pack() 104 105if __name__ == "__main__": 106 app = SampleApp() 107 app.mainloop()

試したこと

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/05/28 02:11

> app.mainloop() mainloopメソッドが見当たらないですが
ooooo123

2020/05/28 05:22

返信ありがとうございます。 mainloopメソッドはtkinterで用意されているもので、 私で記載していません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問