web-dev-qa-db-fra.com

ipython: avoir accès à la figure actuelle ()

Je veux ajouter une grille à grain plus fin sur un graphique tracé. Le problème est que tous les exemples nécessitent un accès à l'objet axe. Je veux ajouter une grille spécifique au graphique déjà tracé (depuis l'intérieur d'ipython).

Comment puis-je accéder à la figure et à l'axe actuels dans ipython?

16
sten

plt.gcf() pour obtenir le chiffre actuel

plt.gca() pour obtenir l'axe actuel

43
runDOSrun

Avec le plt? exemple (en supposant que ipython --pylab)

In [44]: x=np.arange(0,5,.1)
In [45]: y=np.sin(x)
In [46]: plt.plot(x,y)
Out[46]: [<matplotlib.lines.Line2D at 0xb09418cc>]

affiche figure 1; se familiariser avec:

In [47]: f=plt.figure(1)

In [48]: f
Out[48]: <matplotlib.figure.Figure at 0xb17acb2c>

et une liste de ses axes:

In [49]: f.axes
Out[49]: [<matplotlib.axes._subplots.AxesSubplot at 0xb091198c>]

activer la grille pour l'axe actuel (et uniquement):

In [51]: a=f.axes[0]
In [52]: a.grid(True)

Je n'ai pas utilisé le plt depuis un moment, alors j'ai trouvé ce truc en faisant simplement l'intrigue et en recherchant l'achèvement de l'onglet et? pour des trucs probables. Je suis sûr que cela est également disponible dans la documentation plt.

Ou vous pouvez d'abord créer la figure et vous accrocher à sa poignée

In [53]: fig=plt.figure()
In [55]: ax1=fig.add_subplot(2,1,1)
In [56]: ax2=fig.add_subplot(2,1,2)

In [57]: plt.plot(x,y)
Out[57]: [<matplotlib.lines.Line2D at 0xb12ed5ec>]

In [58]: fig.axes
Out[58]: 
[<matplotlib.axes._subplots.AxesSubplot at 0xb0917e2c>,
 <matplotlib.axes._subplots.AxesSubplot at 0xb17a35cc>]

Et il y a gcf et gca (obtenir la figure/l'axe actuel). Identique à MATLAB si ma mémoire est correcte.

In [68]: plt.gca()
Out[68]: <matplotlib.axes._subplots.AxesSubplot at 0xb17a35cc>
In [66]: plt.gcf()
Out[66]: <matplotlib.figure.Figure at 0xb091eeec>

(ceux-ci sont utilisés dans le lien de la barre latérale: Matplotlib.pyplot - Désactiver les axes de la figure./L'axe de la figure se chevauche avec les axes de la sous-intrigue )

8
hpaulj