与OO Matplotlib的交互式人物

时间:2011-02-17 15:26:11

标签: python matplotlib

通过OO 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')

但如果我尝试用交互式后端重复类似的东西,我就会失败(我甚至无法让交互式人物出现在第一位)。有没有人有任何通过OO API使用Matplotlib来创建交互式数据的例子?

1 个答案:

答案 0 :(得分:7)

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

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()

老实说,这不是使用oo界面的方法。如果您需要交互式图表,请执行以下操作:

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 mainloop。