GNU/Linux >> Tutoriels Linux >  >> Linux

Afficher les tracés matplotlib (et autres interfaces graphiques) dans Ubuntu (WSL1 et WSL2)

Les tracés sont également visibles sur WSL à l'aide de Visual Studio Code, qui, à partir de la version de juin 2019, inclut une « visionneuse de tracé ».

Dans un fichier .py normal, insertion d'une chaîne de commentaire #%% marque le code comme une cellule Jupyter (IPython) et une lentille de code affiche les options à Run Cell . De plus, un clic droit à l'intérieur d'un fichier Python inclut l'option :

Exécuter le fichier actuel dans la fenêtre interactive Python

À partir de la version de VS Code de juin 2019 :

La mise à jour de juin 2019 comprenait une toute nouvelle visionneuse de tracés qui peut être utilisée pour manipuler n'importe quel tracé d'image, comme les tracés populaires de matplotlib.

Vous pouvez l'essayer en double-cliquant sur les tracés ou en cliquant sur le bouton "développer l'image" qui s'affiche lorsque vous survolez les images de tracé dans la fenêtre interactive Python :

Avec la visionneuse de tracés, vous pouvez effectuer un panoramique, effectuer un zoom avant/arrière, parcourir les tracés de la session en cours et exporter des tracés aux formats PDF, SVG ou PNG.


Ok, donc je l'ai fait fonctionner comme suit. J'ai Ubuntu sous Windows, avec anaconda python 3.6 installé.

  1. Téléchargez et installez VcXsrv ou Xming (X11 pour Windows) à partir de sourceforge (voir la modification ci-dessous)
  2. sudo apt-get update
  3. sudo apt-get install python3.6-tk (vous devrez peut-être installer un autre python*-tk selon la version de python que vous utilisez)
  4. pip install matplotlib (pour matplotlib. mais beaucoup d'autres choses fonctionnent maintenant aussi)
  5. export DISPLAY=localhost:0.0 (ajouter à ~/.bashrc rendre permanent. voir WSL2 ci-dessous)

Quoi qu'il en soit, après tout cela, ce code s'exécutant dans ubuntu sur wsl a fonctionné tel quel :

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()

résultat:

Peut-être que cela est mieux fait via un cahier Jupyter ou quelque chose du genre, mais c'est bien d'avoir la fonctionnalité python matplotlib de base en ligne de commande dans Ubuntu pour Windows sur le sous-système pour Linux, et cela fait également fonctionner de nombreuses autres applications graphiques.

Par exemple, vous pouvez installer xeyes, et il dira d'installer x11-apps et d'installer cela installera GTK que beaucoup d'applications GUI utilisent. Mais le fait est qu'une fois que vous avez correctement défini votre DISPLAY et votre serveur x sous Windows, la plupart des choses qui fonctionneraient sur un Ubuntu natif fonctionneront pour le WSL.

Modifier 2019-09-04 :Aujourd'hui, j'avais des problèmes avec "Impossible d'obtenir des ressources d'écran" après la mise à niveau de certaines bibliothèques. J'ai donc installé VcXsrv et l'ai utilisé à la place de Xming. Installez simplement à partir de https://sourceforge.net/projects/vcxsrv/ et exécutez xlaunch.exe, sélectionnez plusieurs fenêtres, suivant suivant suivant ok. Ensuite, tout a fonctionné.

Modifier pour les utilisateurs de WSL 2 2020-06-23 WSL2 (actuellement Insider Fast Ring) prend en charge le GPU / Docker, il vaut donc la peine d'être mis à niveau. Cependant, il fonctionne en vm. Pour WSL 2, suivez les mêmes étapes 1 à 4 puis :

  1. l'ip n'est pas localhost. c'est dans resolv.conf alors lancez ceci à la place (et incluez dans ~/.bashrc):
 export DISPLAY=`grep -oP "(?<=nameserver ).+" /etc/resolv.conf`:0.0
  1. Vérifiez maintenant le pare-feu :Sécurité Windows > Pare-feu et protection du réseau > Autoriser une application via le pare-feu > assurez-vous que VcXsrv a vérifié les paramètres public et privé. (Lorsque vous lancez xlaunch pour la première fois, vous pouvez recevoir une invite pour autoriser le pare-feu. Cela fonctionne également. De plus, si VcXsrv ne figure pas dans la liste des applications, vous pouvez l'ajouter manuellement, par exemple à partir de 'C:\program files\vcxsrv\vcxsrv .exe')
  2. Lancez VcXsrv avec "Désactiver le contrôle d'accès" coché

Remarque :quelques utilisateurs de WSL2 ont reçu une erreur telle que couldn't connect to display "172.x.x.x:0" . Si c'est le cas, essayez de vérifier l'adresse IP stockée dans DISPLAY avec cette commande :echo $DISPLAY . Si l'adresse IP affichée semble être erronée (c'est-à-dire "8.8.8.8" ou une autre adresse IP qui ne fonctionne pas), vous devez modifier le code en ~/.bashrc montré au point 5 à quelque chose qui obtiendra l'adresse IP de votre instance. Un utilisateur a déclaré que cela fonctionnait :export DISPLAY=$(ifconfig | grep inet | awk '{print $2}' | head -n 1 | awk '{print $0":0"}') . Cependant, pour d'autres, cela n'a pas fonctionné. YMMV, mais trouvez simplement votre adresse IP et utilisez-la pour DISPLAY. Pour la plupart des utilisateurs de WSL2, la commande dans #5 fonctionne.

Modifier pour Windows 11 :si MS vous a convaincu de jeter votre ancien ordinateur et d'en acheter un avec un TPM et que vous avez donc Windows 11, vous obtenez une interface graphique gratuite. J'espère qu'ils ajouteront un chemin de mise à niveau pour le faire sur Windows 10 car Win10 sera comme XP et durera longtemps puisque MS a décidé que vous avez besoin d'un ordinateur récent même si Win11 fonctionnerait bien sur les anciens ordinateurs.


Pour WSL2 en utilisant la version Ubuntu Focal Fossa, j'ai téléchargé et installé VcXsrv sur Windows. J'utilise cette configuration :

Je ne sais pas pour Native OpenGL mais il semble important de désactiver le contrôle d'accès.

Maintenant, vous devez exporter la variable d'environnement DISPLAY dans WSL.

J'ai trouvé la bonne adresse dans /etc/resolv.conf , mais celui trouvé dans le ifconfig le résultat ne l'est pas. Donc la commande suivante ne fonctionne pas pour moi :

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

Cette adresse IP peut également être trouvée dans la commande ipconfig en CMD.exe contexte de commande. Rechercher vEthernet (WSL) , ça devrait être celui-là.

Maintenant, vous pouvez tester que tout fonctionne en exécutant simplement xcalc dans votre environnement WSL. Si xcalc n'est pas présent, installez-le :

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

La commande xcalc devrait ouvrir une application ressemblant à ceci sous Windows :

Si cela fonctionne, cela signifie que la connexion à votre serveur X est possible, mais vous devrez peut-être installer un package supplémentaire pour Python comme :

sudo apt-get install python3.x-tk

Modifier .x selon votre version de python.


Pour que matplotlib fonctionne avec GTKAgg sur Bash sur Ubuntu sous Windows , je :

  1. installé VcXsrv sous Windows (mais les choses devraient fonctionner de la même manière avec Xming)
  2. définissez DISPLAY comme indiqué ci-dessus [export DISPLAY=localhost:0.0 (ajouter à ~/.bashrc pour rendre permanent)]
  3. exécuté sudo pip uninstall matplotlib
  4. suivi de sudo apt install python-matplotlib
  5. matplotlibrc mis à jour pour lire backend : GTKAgg (plutôt que backend : agg )
  6. J'ai également exécuté sudo apt-get install python-gtk2-dev , mais cela peut ne pas être nécessaire.

La désinstallation de matplotlib installé par pip et sa réinstallation via apt semblent nécessaires car pip n'inclut pas les extensions C nécessaires à l'exécution de GTK, contrairement à la version apt.


Linux
  1. Double démarrage Ubuntu et Windows 10

  2. Comment installer et utiliser FFmpeg sur Ubuntu 20.04

  3. Comment faire un double démarrage de Windows XP et Ubuntu ?

  4. Double boot Windows 8 et Ubuntu 12.04 ?

  5. WSL2 et Kali

Comment installer Ansible sur Ubuntu et d'autres distributions Linux

Comment exécuter des applications d'interface graphique Linux sur Windows 10 avec WSL et WSLg

Ubuntu maintenant dans le Windows Store :mises à jour de Linux sur Windows 10 et conseils importants

Accès à distance à Windows 10 via Ubuntu Linux et Vise Versa

Comment mettre en réseau Ubuntu et Windows 10 ?

Comment partager un fichier entre Ubuntu et Windows 10 ?