通过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来创建交互式数据的例子?
答案 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。