
【スポンサーリンク】
グラフをtkinterへ埋め込む方法
matplotlib内のFigureCanvasTkAgg
オブジェクトを使用することで、グラフをtkinterの画面に埋め込むことが可能になる。また、グラフのツールバーの埋め込みには、NavigationToolbar2Tk
を使用する。以下、例を示す。
import tkinter from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk from matplotlib.figure import Figure import numpy as np root = tkinter.Tk() root.title("matplotlib 埋め込み") #グラフデータ x = np.linspace(0, 2*np.pi, 400) y = np.sin(x) #グラフ用オブジェクト生成 fig = Figure(figsize=(5, 5), dpi=100) #Figure ax = fig.add_subplot(1, 1, 1) #Axes line, = ax.plot(x, y) #2DLine #Figureを埋め込み canvas = FigureCanvasTkAgg(fig, root) canvas.get_tk_widget().pack() #ツールバーを表示 toolbar=NavigationToolbar2Tk(canvas, root) root.mainloop()

FigureCanvasTkAgg
にmatplotlibのFigureオブジェクトとtkinterのTkオブジェクトを渡し、get_tk_widget
メソッドを通してpackを実行することで、tkinterの画面内にグラフを表示させることができる。また、ツールバーはNavigationToolbar2Tkに作成したFigureCanvasTkAggオブジェクトとTkオブジェクトを渡すと表示される。
【スポンサーリンク】
スケールとグラフをリアルタイムで連動
tkinterのScaleウィジェットで関数のパラメータを調整し、その結果をグラフにリアルタイムで反映させる例を示す。
import tkinter from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk from matplotlib.figure import Figure import numpy as np #スケール用関数 def change(value): t = int(value) y = np.sin(t * x) line.set_ydata(y) canvas.draw() root = tkinter.Tk() root.title("matplotlib 埋め込み") #グラフデータ x = np.linspace(0, 2*np.pi, 400) y = np.sin(x) #グラフ用オブジェクト生成 fig = Figure(figsize=(3, 3)) #Figure ax = fig.add_subplot(1, 1, 1) #Axes line, = ax.plot(x, y) #2DLine #Figureを埋め込み canvas = FigureCanvasTkAgg(fig, root) canvas.get_tk_widget().pack() #ツールバーを表示 toolbar=NavigationToolbar2Tk(canvas, root) #スケール s = tkinter.Scale( root, orient="horizontal", #方向 command=change, #調整時に実行 ) s.pack() root.mainloop()
グラフの下にスケールが表示され、左右にスケールを動かすとchange
関数が実行されてグラフが更新される。


【スポンサーリンク】