2010-01-25 27 views
71

Acabo de instalar matplotlib en Ubuntu 9.10 utilizando el sistema de paquete sináptico. Sin embargo, cuando intento el siguiente ejemplo sencilloNo hay ventana de diagrama en matplotlib

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

No me sale la ventana de dibujo. ¿Alguna idea sobre cómo mostrar la ventana de la trama?

+7

pylab no muestra el trazado por defecto, ya que el dibujo y la actualización constante pueden ser costosos. Necesitas hacer un 'show()' explícito. –

+1

Alguna documentación oficial sobre este tema: http://matplotlib.org/faq/installing_faq.html#matplotlib-compiled-fine-but-nothing-shows-up-when-i-use-it – stephenbez

Respuesta

110

Puede escribir

import pylab 
pylab.show() 

o mejor, utilizar ipython -pylab.

9

¿Aparejo algún error? Esto podría ser un problema de no haber establecido el back-end. Puede configurarlo desde el intérprete de Python o desde un archivo de configuración (.matplotlib/matplotlibrc) en su directorio personal.

Para configurar el servidor de código que puede hacer

import matplotlib 
matplotlib.use('Agg') 

donde 'Agg' es el nombre del servidor. Qué back-end están presentes dependen de su instalación y sistema operativo.

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

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

+1

Totalmente funciona, gracias. Para ser claros, lo más simple que hay que hacer (una vez que sabes que esto está funcionando, por supuesto) es establecer tu backend en '.matplotlib/matplotlibrc' en' backend: Agg'. Entonces no tiene que 'usar' explícitamente uno cada vez :) – dsummersl

35

pylab.show() funciona pero bloquea (debe cerrar la ventana).

Una solución mucho más conveniente es hacer pylab.ion() (modo interactivo activado) cuando comience: todos los comandos (los equivalentes de pylab) de pyplot.* muestran su trazado inmediatamente. More information on the interactive mode se puede encontrar en el sitio web oficial.

También segundos utilizando el aún más conveniente ipython -pylab (--pylab, en las últimas versiones), que le permite saltar la parte from … import … (%pylab obras, también, en las nuevas versiones IPython).

+1

pero necesita llamar' pylab.show() 'primero para abrir una figura. –

+3

@Steve: mi experiencia es que esto depende mucho del back-end. En Mac OS X con el shell de Python normal, no tengo que mostrar show() (o draw(), para el caso): plot() abre una nueva ventana. – EOL

+1

Ah, está bien. Buen punto. Solo tengo experiencia con ipython en Linux. –

13

Prueba esto:

import matplotlib 
matplotlib.use('TkAgg') 

ANTES pylab importación

+6

¿Qué debería hacer? –

+2

Está funcionando ahora, gracias. – agarie

0

Si se produce un problema en el que pylab.show() congela la ventana IPython (esto puede ser Mac   OS   X específico; no estoy seguro), se puede cmd-c en la ventana de IPython, cambie a la ventana de trazado y se abrirá.

Aparentemente, futuras llamadas a pylab.show() no congelarán la ventana de IPython, solo la primera llamada. Desafortunadamente, he encontrado que el comportamiento de la ventana de trama/interacciones con show() cambia cada vez que reinstalo matplotlib, por lo que esta solución no siempre se cumple.

6

El siguiente fragmento de código funciona tanto en Eclipse y el terminal de 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() 
+0

Como aclaran muchas otras respuestas, esto puede funcionar para usted en este momento, pero todo depende de cómo se configure su backend matplotlib. – nealmcb

-5

Otra posibilidad cuando se utiliza easy_install es que es necesario requerir la versión más reciente de matplotlib. Probar:

import pkg_resources 
pkg_resources.require("matplotlib") 

antes de importar matplotlib o cualquiera de sus módulos.

+2

Esto simplemente se asegura de que 'matplotlib' esté instalado, no afecta cómo se realiza el manejo de la ventana. – tacaswell

0

Si está iniciando IPython con la opción --pylab, no debería necesitar llamar al show() o draw(). Prueba esto:

ipython --pylab=inline 
0

--pylab ya no trabaja para Jupyter, pero afortunadamente podemos añadir un pellizco en el archivo ipython_config.py para conseguir tanto pylab, así como autoreload funcionalidades.

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

moderna IPython utiliza el "--matplotlib" discusión con un parámetro opcional backend. Por defecto es "automático", que generalmente es lo suficientemente bueno en Mac y Windows. No lo he probado en Ubuntu ni en ninguna otra distribución de Linux, pero espero que funcione.

ipython --matplotlib 
Cuestiones relacionadas