首页 > 解决方案 > 在图形画布上嵌入数据框图?

问题描述

尽管https://matplotlib.org/3.1.0/gallery/user_interfaces/embedding_in_tk_sgskip.html上有大量的 matplotlib 文档, 但我仍在为在 tkinter GUI 中的图形画布上嵌入数据框图的简单任务而苦苦挣扎。

我已经加载了所有相关的包并在名为“root”的 tkinter 主窗口中创建了名为“df”的数据框。

问题可能源于对数字如何工作的理解不足,归结为以下代码行

fig=df.plot()
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.draw()
canvas.get_tk_widget().pack(side=TOP)

我收到的错误消息指出,“AttributeError:'AxesSubplot' 对象没有属性 'set_canvas'”

标签: pythonpandasmatplotlibtkinter

解决方案


TheLizzard 的评论是正确的,df.plot()不返回 amatplotlib.figure.Figure而是 a matplotlib.axes.AxesSubplot并且fig应该是 a Figure

但是,df.plot()可以AxesSubplot在参数(ax选项)中使用 matplotlib。所以你可以在图中创建子图,然后在子图中绘制你DataFrame的:

fig = Figure(figsize=(5, 4), dpi=100) # create the figure
ax = fig.add_subplot(111)   # create the subplot
df.plot(ax=ax)  # plot df in ax

canvas = FigureCanvasTkAgg(fig, master=root)  # A tk.DrawingArea.
canvas.draw()
canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)

推荐阅读