2011-02-17 7 views
6

En utilisant Matplotlib via l'API OO est assez facile pour un backend non interactif:figure interactif avec 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') 

Mais si je tente de répéter quelque chose de similaire avec backends interactifs, j'échouer lamentablement (je peux » t même faire apparaître le personnage interactif en premier lieu). Quelqu'un at-il des exemples d'utilisation de Matplotlib via l'API OO pour créer des figures interactives?

Répondre

7

Eh bien, vous devez utiliser un backend qui supporte l'interaction!

backend_agg n'est pas interactif. backend_tkagg (ou l'un des autres backends similaires) est.

Une fois que vous utilisez un back-end interactif, vous devez faire quelque chose comme ceci:

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

Honnêtement, cependant, ce n'est pas la façon d'utiliser l'interface oo. Si vous allez avoir besoin de parcelles interactives, faire quelque chose de plus comme ceci:

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

Vous utilisez encore l'interface oo, vous simplement laisser pyplot poignée créer le gestionnaire de la figure et entrez le mainloop pour vous IUG .

Questions connexes