2011-02-17 44 views
6

交互式數字通過OO API使用Matplotlib是一個非交互式後端很容易:與OO 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創建交互式數字的例子?

回答

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

老實說,雖然,這是不使用面向對象的接口方式。如果你將需要互動的地塊,做更多的事情是這樣的:

import matplotlib.pyplot as plt 
fig = plt.figure() 
ax = fig.add_subplot(1,1,1) 
ax.plot([1,2,3]) 
plt.show() 

你還在使用面向對象的接口,你只是讓pyplot手柄創建人物經理和進入GUI主循環爲你。