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.
- Descargue e instale Xming (servidor X Window para Windows) desde sourceforge
-
sudo apt-get update
-
sudo apt-get install python3.6-tk
(puede que tenga que instalar unpython*-tk
diferentepython*-tk
muestra en la versión de python que está usando) -
pip install matplotlib
(para matplotlib. pero muchas otras cosas ahora también funcionan) -
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()
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:
- instalé VcXsrv en Windows (pero las cosas deberían funcionar igual con Xming)
- establezca DISPLAY como se indicó anteriormente [
export DISPLAY=localhost:0.0
(agregue a ~ / .bashrc para que sea permanente)] - ejecutado
sudo pip uninstall matplotlib
- seguido de
sudo apt install python-matplotlib
- matplotlibrc actualizado para leer
backend : GTKAgg
(en lugar debackend : agg
) - 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.