web-dev-qa-db-fra.com

Aucune fenêtre de tracé dans matplotlib

Je viens d'installer matplotlib dans Ubuntu 9.10 à l'aide du système de paquet synaptic. Cependant, quand j'essaie le simple exemple suivant

>>> from pylab import plot;
>>> plot([1,2,3],[1,2,3])
[<matplotlib.lines.Line2D object at 0x9aa78ec>]

Je n'ai pas de fenêtre d'intrigue. Des idées sur la façon de faire apparaître la fenêtre d’intrigue?

76
dzhelil

Vous pouvez taper

import pylab
pylab.show()

ou mieux, utilisez ipython -pylab.

125
Peter

pylab.show() fonctionne mais bloque (vous devez fermer la fenêtre).

Une solution beaucoup plus pratique consiste à faire pylab.ion() (mode interactif activé) au démarrage: toutes les commandes pyplot.* (l'équivalent pylab de), affichent immédiatement leur tracé. Plus d'informations sur le mode interactif peuvent être trouvées sur le site web officiel.

J'utilise également le ipython -pylab (--pylab, dans les versions les plus récentes) encore plus pratique, ce qui vous permet d'ignorer la partie from … import … (%pylab fonctionne également dans les versions plus récentes d'IPython).

36
Eric O Lebigot

Essaye ça:

import matplotlib
matplotlib.use('TkAgg') 

AVANT d'importer le pylab

16
linhares

Des erreurs apparaissent? Cela pourrait être un problème de ne pas avoir défini le backend. Vous pouvez le définir à partir de l'interpréteur Python ou d'un fichier de configuration (.matplotlib/matplotlibrc) de votre répertoire personnel.

Pour définir le backend en code, vous pouvez faire

import matplotlib
matplotlib.use('Agg')

où 'Agg' est le nom du backend. Les backends présents dépendent de votre installation et de votre système d'exploitation.

http://matplotlib.sourceforge.net/faq/installing_faq.html#backends

http://matplotlib.org/users/customizing.html

9
Matti Lyra

L'extrait de code ci-dessous fonctionne à la fois sur Eclipse et sur le shell Python:

import numpy as np
import matplotlib.pyplot as plt

# Come up with x and y
x = np.arange(0, 5, 0.1)
y = np.sin(x)

# Just print x and y for fun
print x
print y

# Plot the x and y and you are supposed to see a sine curve
plt.plot(x, y)

# Without the line below, the figure won't show
plt.show()
9
neobot

Modern IPython utilise l'argument "--matplotlib" avec un paramètre facultatif de backend. La valeur par défaut est "auto", ce qui est généralement suffisant sur Mac et Windows. Je ne l'ai pas testé sur Ubuntu ou sur aucune autre distribution Linux, mais je m'attendrais à ce que cela fonctionne.

ipython --matplotlib
2
calvinvette

Si vous rencontrez un problème dans lequel pylab.show() gèle la fenêtre IPython (cela peut être spécifique à Mac OS X; incertain), vous pouvez cmd-c dans la fenêtre IPython, basculer vers la fenêtre de traçage et elle éclatera. 

Apparemment, les prochains appels à pylab.show() ne gèlent pas la fenêtre IPython, mais uniquement le premier appel. Malheureusement, j'ai constaté que le comportement de la fenêtre de tracé/des interactions avec show () change chaque fois que je réinstalle matplotlib. Cette solution n'est donc peut-être pas toujours valable.

0
keflavich

--pylab ne fonctionne plus pour Jupyter , mais heureusement, nous pouvons ajouter un Tweak dans le fichier ipython_config.py pour obtenir les fonctionnalités pylab ainsi que autoreload.

c.InteractiveShellApp.extensions = ['autoreload', 'pylab']
c.InteractiveShellApp.exec_lines = ['%autoreload 2', '%pylab']
0
dashesy

Si vous démarrez IPython avec l'option --pylab, vous ne devriez pas avoir à appeler show() ni draw(). Essaye ça:

ipython  --pylab=inline
0
Scofield77