次のスクリプトを実行すると:
import tkinter as tk
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.figure
import matplotlib.backends.backend_tkagg
import numpy as np
def on_key_event(event, canvas, toolbar):
matplotlib.backend_bases.key_press_handler(event, canvas, toolbar)
matplotlib.use('TkAgg')
root = tk.Tk()
root.wm_title('Test window')
fig = matplotlib.figure.Figure(figsize=(9.333, 7), dpi=100)
a = fig.add_subplot(111)
axes = fig.gca()
x = np.linspace(0, 2*np.pi, 100)
axes.plot(x, np.sin(x), marker='.')
axes.set_title('sin(x)')
axes.grid()
canvas = matplotlib.backends.backend_tkagg.FigureCanvasTkAgg(fig, master=root)
canvas.draw()
canvas.get_tk_widget().pack(fill=tk.X, expand=1)
canvas.mpl_connect(
'key_press_event',
lambda event: on_key_event(event, canvas, toolbar)
)
toolbar = matplotlib.backends.backend_tkagg.NavigationToolbar2TkAgg(
canvas, root
)
toolbar.update()
root.bind('<Control-w>', lambda event: root.destroy())
tk.mainloop()
警告が表示されます:
MatplotlibDeprecationWarning: The NavigationToolbar2TkAgg class was
deprecated in version 2.2.
なぜNavigationToolbar2TkAg
は非推奨であり、代わりに何を使用すべきですか?
代わりに何を使用しますか?
Matplotlibで使用するようになりました
NavigationToolbar2Tk
の代わりに NavigationToolbar2TkAgg
。
なぜ廃止されたのですか?
ナビゲーションツールバーはレンダラーから独立しています。例えば。 Aggレンダラーとcairoレンダラーの両方で同じナビゲーションツールバーを使用できます。したがって、レンダラーの名前(「Agg」)を含まない名前で提供することは理にかなっています。
これは更新が停止されたことを意味しているため、不安定である可能性があります。現在のプロジェクトで使用しています。エラーは常に表示されますが、ツールバーは正常に機能します。