代替NavigationToolbar2TkAgg使用什么?(这是一个关于IT技术的提问)

9
当我运行以下脚本时:
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被弃用了,我应该使用什么替代品?
2个回答

30

使用什么代替?

现在Matplotlib希望您使用

NavigationToolbar2Tk

使用 NavigationToolbar2Tk 替代 NavigationToolbar2TkAgg

为什么它被废弃了?

导航工具栏独立于渲染器。例如,Agg 渲染器和cairo渲染器都可以使用相同的导航工具栏。因此,提供一个不带有渲染器名称("Agg")的名称是有意义的。


1
理想情况下,v2.2及以上版本的NavigationToolbar2TkAgg文档应该直接指导你使用替换它的类,而不仅是告诉你它已过时。 - Daniel Kocevski
@DanielKocevski 看起来 NavigationToolbar2TkAgg 实际上没有任何文档记录。你在哪里找到了它的链接? - ImportanceOfBeingErnest
1
是的,您可以在2.2.3文档此处找到它的参考。据我所知,它似乎没有出现在3.0文档中。不过,总的来说,当旧类被弃用时,让matplotlib文档引用新类会非常有用。 - Daniel Kocevski
@DanielKocevski 这里有一个alternative字段,可以用来指向废弃函数/类等的替代方案(例如参见这里)。不幸的是,在这种情况下没有使用。 - ImportanceOfBeingErnest

0

我相信这意味着它已经停止更新,因此可能不稳定。我在我的当前项目中使用它,错误总是显示,但工具栏运行良好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接