通过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')
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试用交互式后端重复类似的东西,我就会失败(我甚至无法让交互式人物出现在第一位).有没有人有任何通过OO API使用Matplotlib来创建交互式数据的例子?
好吧,你需要使用支持交互的后端!
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()
Run Code Online (Sandbox Code Playgroud)
但老实说,这不是使用oo界面的方法.如果您需要交互式图,请执行以下操作:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot([1,2,3])
plt.show()
Run Code Online (Sandbox Code Playgroud)
你还在使用oo界面,你只需要pyplot处理创建图形管理器并为你输入gui mainloop.