matplotlib no muestra mis dibujos aunque llamo a pyplot.show ()

Ayuda requerida en matplotlib. Sí, no olvidé de llamar a pyplot.show ().

$ ipython –pylab

import matplotlib.pyplot as p p.plot(range(20), range(20)) 

Devuelve matplotlib.lines.Line2D at 0xade2b2c como salida.

 p.show() 

No hay nada que suceder. No hay mensaje de error. No hay nueva ventana. Nada. matplotlib usando pip y no recibí ningún mensaje de error.

Detalles:

Yo suelo,

  • Ubuntu
  • IPython v0.11
  • Python v2.6.6
  • matplotlib v1.0.1

Si configuro mi backend a la template en ~/.matplotlib/matplotlibrc , entonces puedo reproducir sus síntomas:

~ / .matplotlib / matplotlibrc:

 # backend : GtkAgg backend : template 

Tenga en cuenta que el archivo matplotlibrc puede no estar en el directorio ~/.matplotlib/ . En este caso, el siguiente código muestra dónde está:

 >>> import matplotlib >>> matplotlib.matplotlib_fname() 

 In [1]: import matplotlib.pyplot as p In [2]: p.plot(range(20),range(20)) Out[2]: [] In [3]: p.show() 

Si edita ~/.matplotlib/matplotlibrc y cambia el backend a algo como GtkAgg , debería ver una gráfica. Puede listar todos los backends disponibles en su máquina con

 import matplotlib.rcsetup as rcsetup print(rcsetup.all_backends) 

Debería devolver una lista como:

 ['GTK', 'GTKAgg', 'GTKCairo', 'FltkAgg', 'MacOSX', 'QtAgg', 'Qt4Agg', 'TkAgg', 'WX', 'WXAgg', 'CocoaAgg', 'agg', 'cairo', 'emf', 'gdk', 'pdf', 'ps', 'svg', 'template'] 

Referencia:

  • Personalizando matplotlib

Me encontré con el mismo problema en Ubuntu 12.04, porque instalé matplotlib (dentro de un virtualenv) usando

 pip install matplotlib 

Para resumir, mi consejo es: no intente instalar matplotlib con pip o con la mano; deje que un administrador de paquetes real (por ejemplo, apt-get / synaptic) lo instale y todas sus dependencias por usted.

Desafortunadamente, los backends de matplotlib (métodos alternativos para representar sus plots) tienen todo tipo de dependencias con las que pip no tratará. Peor aún, falla silenciosamente; es decir, pip install matplotlib parece instalar matplotlib correctamente. Pero cuando intenta usarlo (por ejemplo, pyplot.show() ), no aparecerá ninguna ventana de trazado. Probé todos los backends diferentes que sugiere la gente en la web (Qt4Agg, GTK, etc.), y todos fallaron (es decir, cuando intenté importar matplotlib.pyplot, obtengo ImportError porque está intentando importar alguna dependencia que falta). Luego investigué cómo instalar esas dependencias, pero simplemente me hizo querer renunciar a usar pip (dentro de virtualenv) como una solución de instalación viable para cualquier paquete que tenga dependencias de paquetes que no sean de Python.

Toda la experiencia me envió de nuevo a apt-get / synaptic (es decir, el administrador de paquetes de Ubuntu) para instalar software como matplotlib. Eso funcionó perfectamente. Por supuesto, eso significa que solo puede instalar en los directorios de su sistema, sin la bondad de virtualenv, y está atascado con las versiones que distribuye Ubuntu, que pueden estar muy por detrás de la versión actual …

% matplotlib en línea

Para mí, trabajar con notebook, agregar la línea anterior antes de que funcione la ttwig.

Para futura referencia,

He encontrado el mismo problema: pylab no se mostraba en ipython. El problema se solucionó cambiando el archivo de configuración de ipython {ipython_config.py}. En el archivo de configuración

c.InteractiveShellApp.pylab = 'auto'

Cambié ‘auto’ a ‘qt’ y ahora veo gráficos

Sólo tipo:

plt.ion()

¡Visita https://www.youtube.com/watch?v=1zmV8lZsHF4 a las 23:30!

plt se utiliza debido a mi importación: import matplotlib.pyplot como plt

Estoy usando python2.7 en un mac con iTerm2.

Lo que resolvió mi problema fue usar las dos líneas siguientes en el cuaderno ipython en la parte superior

 %matplotib inline %pylab inline 

Y funcionó. Estoy usando Ubuntu16.04 y ipython-5.1

Tuve que instalar matplotlib desde la fuente para que esto funcione. Las instrucciones clave (de http://www.pyimagesearch.com/2015/08/24/resolved-matplotlib-figures-not-showing-up-or-displaying/ ) son:

 $ workon plotting $ pip uninstall matplotlib $ git clone https://github.com/matplotlib/matplotlib.git $ cd matplotlib $ python setup.py install 

Al cambiar el backend, como dice @unutbu, acabo de encontrar muchos más problemas con todos los backends diferentes que tampoco funcionan.

Añadir las siguientes dos líneas antes de importar pylab parece funcionar para mí

 import matplotlib matplotlib.use("gtk") import sys import pylab import numpy as np 

Asegúrese de tener este script de inicio habilitado: (Preferencias> Consola> Opciones avanzadas)

 /usr/lib/python2.7/dist-packages/spyderlib/scientific_startup.py 

Si el PYTHONSTARTUP estándar está habilitado, no tendrá un gráfico interactivo

Al igual que en @Rikki, resolví este problema actualizando matplotlib con pip install matplotlib --upgrade . Si no puede actualizar, la desinstalación y la reinstalación pueden funcionar.

 pip uninstall matplotlib pip install matplotlib 

Después de ejecutar su código incluyen:

 import pylab as p p.show() 

Encontré que necesitaba window = Tk() y luego window.mainloop()

Para Ubuntu 12.04:

 sudo apt-get install python-qt4 virtualenv .env --no-site-packages source .env/bin/activate easy_install -U distribute ln -s /usr/lib/python2.7/dist-packages/PyQt4 . ln -s /usr/lib/python2.7/dist-packages/sip.so . pip install matplotlib 

Para mí, el problema ocurre si simplemente creo un archivo matplotlibrc vacío en ~/.matplotlib en macOS. Agregar “backend: macosx” en él soluciona el problema.

Creo que es un error: si el backend no está especificado en mi matplotlibrc , debería tomar el valor predeterminado.