OO Matplotlib交互式图形

7

通过面向对象的API使用Matplotlib对于非交互式后端来说是足够简单的:

 from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
 from matplotlib.figure import Figure

 fig = Figure()
 canvas = FigureCanvas(fig)
 ax = fig.add_subplot(1,1,1)
 ax.plot([1,2,3])
 canvas.print_figure('test.png')

但是如果我尝试使用交互式后端进行类似的操作,我会非常失败(我甚至无法让交互式图像首先出现)。有人有使用Matplotlib通过OO API创建交互式图像的示例吗?

1个回答

8

你需要使用支持交互的后端!

backend_agg 不支持交互。 backend_tkagg(或其他类似的后端)支持。

一旦你使用了支持交互的后端,你需要做更多类似以下的事情:

import matplotlib.backends.backend_tkagg as backend
from matplotlib.figure import Figure

manager = backend.new_figure_manager(0)
fig = manager.canvas.figure
ax = fig.add_subplot(1,1,1)
ax.plot([1,2,3])
fig.show()
backend.show()

老实说,这不是使用面向对象接口的正确方式。如果您需要交互式图形,请使用以下方法:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot([1,2,3])
plt.show()

您仍在使用oo界面,只是让pyplot处理图像管理器的创建并为您进入GUI主循环。

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