GNU/Linux >> Tutoriales Linux >  >> Linux

Mostrar diagramas de matplotlib (y otra GUI) en Ubuntu (WSL1 y WSL2)

Los gráficos también se pueden ver en WSL con Visual Studio Code, que a partir de la versión de junio de 2019 incluye un "Visor de gráficos".

En un archivo .py normal, insertando una cadena de comentarios #%% marca el código como una celda Jupyter (IPython) y una lente de código muestra opciones para Run Cell . Además, hacer clic derecho dentro de un archivo de Python incluye la opción:

Ejecutar el archivo actual en la ventana interactiva de Python

De la versión de junio de 2019 de VS Code:

La actualización de junio de 2019 incluyó un visor de gráficos completamente nuevo que se puede usar para manipular gráficos de cualquier imagen, como los populares gráficos matplotlib.

Puede probarlo haciendo doble clic en las gráficas o haciendo clic en el botón "expandir imagen" que se muestra cuando pasa el mouse sobre las imágenes gráficas en la ventana interactiva de Python:

Con el visor de gráficos, puede desplazar, acercar/alejar, navegar por los gráficos en la sesión actual y exportar gráficos a formatos PDF, SVG o PNG.


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

  1. Descargue e instale VcXsrv o Xming (X11 para Windows) desde sourceforge (consulte la edición a continuación)
  2. sudo apt-get update
  3. sudo apt-get install python3.6-tk (es posible que deba instalar un python*-tk diferente dependiendo de la versión de python que esté usando)
  4. pip install matplotlib (para matplotlib, pero ahora también funcionan muchas otras cosas)
  5. export DISPLAY=localhost:0.0 (añadir a ~/.bashrc para hacer permanente. ver WSL2 abajo)

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 esto se haga mejor a través de un cuaderno Jupyter o algo así, pero es bueno tener la funcionalidad básica de línea de comandos python matplotlib en Ubuntu para Windows en Subsystem para Linux, y esto hace que muchas otras aplicaciones de interfaz gráfica de usuario también funcionen.

Por ejemplo, puede instalar xeyes, y le dirá que instale x11-apps e instalar eso instalará GTK que usan muchas aplicaciones GUI. Pero el punto es que una vez que haya configurado su PANTALLA correctamente y su servidor x en Windows, entonces la mayoría de las cosas que funcionarían en un ubuntu nativo funcionarán para WSL.

Editar 2019-09-04 :Hoy tuve problemas con 'no se pueden obtener recursos de pantalla' después de actualizar algunas bibliotecas. Así que instalé VcXsrv y lo usé en lugar de Xming. Simplemente instálelo desde https://sourceforge.net/projects/vcxsrv/ y ejecute xlaunch.exe, seleccione varias ventanas, siguiente, siguiente, siguiente, ok. Entonces todo funcionó.

Editar para usuarios de WSL 2 2020-06-23 WSL2 (actualmente anillo rápido interno) tiene compatibilidad con GPU/docker, por lo que vale la pena actualizarlo. Sin embargo, se ejecuta en vm. Para WSL 2, siga los mismos pasos 1 a 4 y luego:

  1. la ip no es localhost. está en resolv.conf, así que ejecute esto en su lugar (e inclúyalo en ~/.bashrc):
 export DISPLAY=`grep -oP "(?<=nameserver ).+" /etc/resolv.conf`:0.0
  1. Ahora verifique dos veces el firewall:Seguridad de Windows -> Firewall y protección de la red -> Permitir una aplicación a través del firewall -> asegúrese de que VcXsrv tenga verificado tanto lo público como lo privado. (Al iniciar xlaunch por primera vez, es posible que reciba un aviso para permitir a través del firewall. Esto también funciona. Además, si VcXsrv no está en la lista de aplicaciones, puede agregarlo manualmente, por ejemplo, desde 'C:\Archivos de programa\vcxsrv\vcxsrv .exe')
  2. Inicie VcXsrv con "Desactivar control de acceso" marcado

Nota:algunos usuarios de WSL2 obtuvieron un error como couldn't connect to display "172.x.x.x:0" . Si es así, intenta verificar la dirección IP almacenada en DISPLAY con este comando:echo $DISPLAY . Si la IP mostrada parece ser incorrecta (es decir, "8.8.8.8" u otra dirección IP que no funciona), debe cambiar el código en ~/.bashrc mostrado en el punto 5 a algo que obtendrá la dirección IP de su instancia. Un usuario dijo que esto funcionó:export DISPLAY=$(ifconfig | grep inet | awk '{print $2}' | head -n 1 | awk '{print $0":0"}') . Sin embargo, para algunos otros no funcionó. YMMV, pero solo encuentre su IP y use if para DISPLAY. Para la mayoría de los usuarios de WSL2, el comando del n.º 5 funciona.

Editar para Windows 11 :si MS lo convenció de tirar su computadora vieja y comprar una con un TPM y así obtuvo Windows 11, obtiene la GUI gratis. Espero que agreguen una ruta de actualización para hacer eso en Windows 10 porque Win10 será como XP y durará mucho tiempo ya que MS decidió que necesita una computadora reciente, aunque Win11 funcionaría bien en computadoras antiguas.


Para WSL2 usando la versión Ubuntu Focal Fossa, descargué e instalé VcXsrv en Windows Yo uso esta configuración:

No sé para OpenGL nativo pero parece importante deshabilitar el control de acceso.

Ahora, necesita exportar la variable env DISPLAY en WSL.

Encontré la dirección correcta en /etc/resolv.conf , sino el que se encuentra en el ifconfig el resultado no lo es. Entonces el siguiente comando no funciona para mi:

export DISPLAY=$(ifconfig | grep inet | awk '{print $2}' | head -n 1 | awk '{print $0":0"}')

Esa dirección IP también se puede encontrar en el comando ipconfig en CMD.exe contexto de comando. Buscar vEthernet (WSL) , ese debería ser el indicado.

Ahora, puede probar que todo funciona simplemente ejecutando xcalc en su entorno WSL. Si xcalc no está presente, instálelo:

sudo apt-get update && sudo apt-get install x11-apps

El comando xcalc debería abrir una aplicación con este aspecto en Windows:

Si funciona, eso significa que la conexión a su servidor X es posible, pero tal vez necesite instalar algún paquete adicional para Python como:

sudo apt-get install python3.x-tk

Cambiar .x según su versión de python.


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

  1. VcXsrv instalado en Windows (pero todo debería funcionar igual con Xming)
  2. configure DISPLAY como se indicó anteriormente [export DISPLAY=localhost:0.0 (añadir a ~/.bashrc para hacer 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 esto puede no ser necesario.

Parece necesario desinstalar el matplotlib instalado con pip y reinstalarlo a través de apt porque pip no incluye las extensiones C necesarias para ejecutar GTK, pero la versión apt sí.


Linux
  1. Arranque dual Ubuntu y Windows 10

  2. Cómo instalar y usar FFmpeg en Ubuntu 20.04

  3. ¿Cómo Arrancar Dualmente Windows XP y Ubuntu?

  4. WSL2 y Kali

  5. Cómo habilitar systemd en WSL2:Ubuntu 20 y CentOS 8

Cómo instalar Ansible en Ubuntu y otras distribuciones de Linux

Cómo ejecutar aplicaciones GUI de Linux en Windows 10 con WSL y WSLg

Ubuntu ahora en la tienda de Windows:actualizaciones de Linux en Windows 10 y consejos importantes

Acceso remoto a Windows 10 a través de Ubuntu Linux y Vise Versa

¿Cómo conectar en red Ubuntu y Windows 10?

¿Cómo compartir archivos entre Ubuntu y Windows 10?