2013-03-18 1 views
4

J'appelle le mode inline pour IPython Notebook using;Tracer une figurine Notebook IPython en ligne avec fig.show()?

%pylab inline 

Et le code suivant trace un chiffre immédiatement à la cellule; Cependant, je voudrais créer l'intrigue/les axes etc. dans une cellule, et tracer plus tard en utilisant peut-être;

fig.show() 

Comment améliorer le contrôle du mode en ligne? Si je n'utilise pas% pylab inline, cela crée une intrigue dans une fenêtre séparée que je ne veux pas (et cela gèle généralement la fenêtre).

Versions;

Numpy: 1.7.0 
Matplotlib: 1.2.1rc1 
Python: 2.7.2 (default, Jun 24 2011, 12:22:14) [MSC v.1500 64 bit (AMD64)] 
Pandas: 0.10.1 
PyLab: 1.7.0 
+0

Avez-vous essayé avec la fonction d'affichage de ipython? c'est la méthode «officielle», autant que je sache. – EnricoGiampieri

+0

Est-ce que vous ne voulez pas que le chiffre soit généré, ou vous ne voulez pas regarder les axes vides? – askewchan

+0

En général, je veux créer une figure dans une cellule, travailler dessus dans un autre en utilisant sa poignée, et attendre son affichage jusqu'à ce qu'une autre cellule apparaisse plus tard. –

Répondre

5

Vous cherchez peut-être désactiver la figure autoclose:

InlineBackend options 
--------------------- 
--InlineBackend.close_figures=<CBool> 
    Default: True 
Close all figures at the end of each cell. 
When True, ensures that each cell starts with no active figures, but it also 
means that one must keep track of references in order to edit or redraw 
figures in subsequent cells. This mode is ideal for the notebook, where 
residual plots from other cells might be surprising. 
When False, one must call figure() to create new figures. This means that 
gcf() and getfigs() can reference figures created in other cells, and the 
active figure can continue to be edited with pylab/pyplot methods that 
reference the current active figure. This mode facilitates iterative editing 
of figures, and behaves most consistently with other matplotlib backends, 
but figure barriers between cells must be explicit. 

encore, IPython montrera la figure si la dernière ligne d'une cellule renvoie un objet figure, vous pouvez éviter cela en terminant par ; ou ajouter pass comme dernière ligne.

+0

c.InlineBackend.close_figures = False est maintenant défini dans \ myIPythonDir \ profile_myHomeProfile \ ipython_notebook_config.py. Les axes = fig.add_axes ([0, 0, 1, 1]) cmd me donnent toujours un tracé après la cellule, même avec un point-virgule et une passe. Un moyen d'afficher les options actuelles pour vérifier si ce drapeau est bien défini? –

+0

'% config InlineBackend' devrait vous indiquer la valeur de configuration différente. – Matt

+0

Celui-ci fonctionne presque! Je ne peux tout simplement pas obtenir les chiffres à surpresser dans les cellules intermédiaires, c'est-à-dire avec; ou passer – nrob

5

donc je suppose que ce que vous voulez est la suivante:

from matplotlib.backends.backend_agg import FigureCanvasAgg as fc 
fig = Figure() 
canvas = fc(fig) 
ax = fig.add_subplot(1, 1, 1) 
ax.plot(arange(10)) 

Pour afficher la parcelle dans une autre cellule simplement utiliser:

fig 
+0

Merci pour la réponse. Cela signifie également que l'affichage (fig) le fera. – ntg