如何从一个图形对象中显示matplotlib图表

4

我的代码包含以下行:

from matplotlib.figure import Figure

figure = Figure(figsize=(10, 5), dpi=dpi)

我该如何在matplotlib中显示这个图形?我已经成功将其嵌入到tkinter中显示,但我也想在标准的matplotlib窗口中显示它。但是无论如何我都无法使其正常工作。请帮忙解决。

是的,我已经尝试过 figure.show(),但这并没有起作用。你说的使用pyplot是什么意思?我认为我需要Figure才能在tkinter中稍后使用FigureCanvasTkAgg(figure, master=self)。这里的示例都使用matplotlib.figure。 - J..
你使用的运行环境是什么?操作系统?命令行还是任何集成开发环境? - pyan
操作系统:macOS Sierra。 我使用Python 3在命令行(终端)中运行它。 - J..
2个回答

1
根据 尝试加载已pickle化的matplotlib图时出现AttributeError,一个简单的解决方法是:
fig = plt.Figure(...)
......
managed_fig = plt.figure(...)
canvas_manager = managed_fig.canvas.manager
canvas_manager.canvas.figure = fig
fig.set_canvas(canvas_manager.canvas)

请注意,我在我的环境中遇到了“'Figure' object has no attribute '_original_dpi'”的问题。不确定是我的PyPlot和PyQt5之间的兼容性问题。我只是做了一个hack:
fig._original_dpi = 60

为了解决这个问题,不确定是否有更好的解决方案。

-4

我通常使用matplotlib的pyplot进行即时生成(或在jupyter笔记本中生成图像)。这将看起来像下面这样:

import matplotlib.pyplot as plt

figure = plt.figure(figsize=(10, 5), dpi=dpi)
plt.show()

这将按预期显示(空白)图像。


使用 plt.figure 而不是 Figure 看起来可以工作。但是当我绘制图形时,我也会得到另一个弹出窗口,其中包含一个带有色条的 matplotlib 图形,如此处所示 here。而且当我在 tkinter 中绘图时,然后决定用 plt.show() 绘图,它会显示 2 次绘图以及 2 次色条绘图。(当我在 tkinter 中绘图 2 次时,没有绘图显示 3 次,依此类推)。 - J..
@J.. 我不知道你正在做什么的细节。我只能回答你在问题中提出的内容。如果你有其他问题或用例,请提出另一个问题,确切地包含你想要的内容。 - davidlowryduda
那我会尝试弄清楚它。如果我不行,我会创建另一个问题。感谢您的帮助! - J..

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