python linux matplotlib windows-subsystem-for-linux

python - Mostrar diagramas matplotlib en Ubuntu(subsistema Windows para Linux)



windows-subsystem-for-linux (2)

Ok, así lo tengo funcionando de la siguiente manera. Tengo Ubuntu en Windows, con anaconda python 3.6 instalado.

  1. Descargue e instale Xming (servidor X Window para Windows) desde sourceforge
  2. sudo apt-get update
  3. sudo apt-get install python3.6-tk (puede que tenga que instalar un python*-tk diferente python*-tk muestra en la versión de python que está usando)
  4. pip install matplotlib (para matplotlib. pero muchas otras cosas ahora también funcionan)
  5. export DISPLAY=localhost:0.0 (agregue a ~/.bashrc para que sea permanente)

De todos modos, después de todo eso, este código que se ejecuta en Ubuntu en WSL funcionó como está:

import matplotlib.pyplot as plt import numpy as np t = np.arange(0.0, 2.0, 0.01) s = 1 + np.sin(2*np.pi*t) plt.plot(t, s) plt.title(''About as simple as it gets, folks'') plt.show()

resultado:

Tal vez sea mejor hacerlo a través de un cuaderno Jupyter o algo así, pero es bueno tener la funcionalidad básica de la línea de comandos de python matplotlib en Ubuntu para Windows en Subsistema para Linux, y esto hace que muchas otras aplicaciones gui también funcionen.

Así que parece que en Ubuntu para Windows (subsistema de Windows para Linux) la gente está sugiriendo que necesitamos usar Agg backend y simplemente guardar imágenes, no mostrar gráficos.

import matplotlib matplotlib.use(''Agg'') # no UI backend import matplotlib.pyplot as plt import numpy as np t = np.arange(0.0, 2.0, 0.01) s = 1 + np.sin(2*np.pi*t) plt.plot(t, s) plt.title(''About as simple as it gets, folks'') #plt.show() plt.savefig("matplotlib.png") #savefig, don''t show

¿Cómo podríamos llegar a donde plt.show () realmente nos mostraría una imagen? Mi opción actual es anular plot.show () para, en cambio, solo guardarfig a plot-148123456.png en / mnt / c / Users / james / plots / en windows y solo tener una ventana del explorador abierta para ver las imágenes.

Supongo que podría alojar esa carpeta y usar un navegador.

Mi objetivo es poder ejecutar ejemplos simples como el código anterior sin cambiar el código para ajustar las imágenes en algún lugar, etc. Solo quiero que la trama aparezca en una ventana.

¿Alguien ha descubierto una manera decente de hacerlo?


Para hacer que matplotlib funcione con GTKAgg en Bash en Ubuntu en Windows , yo:

  1. instalé VcXsrv en Windows (pero las cosas deberían funcionar igual con Xming)
  2. establezca DISPLAY como se indicó anteriormente [ export DISPLAY=localhost:0.0 (agregue a ~ / .bashrc para que sea permanente)]
  3. ejecutado sudo pip uninstall matplotlib
  4. seguido de sudo apt install python-matplotlib
  5. matplotlibrc actualizado para leer backend : GTKAgg (en lugar de backend : agg )
  6. También ejecuté sudo apt-get install python-gtk2-dev , pero puede que no sea necesario.

Desinstalar matplotlib instalado por pip y reinstalarlo a través de apt parece ser necesario porque pip no incluye las extensiones C necesarias para ejecutar GTK, pero sí la versión de apt.