web-dev-qa-db-fra.com

Afficher les tracés matplotlib dans Ubuntu (sous-système Windows pour Linux)

Il semble donc que sur Ubuntu pour Windows (sous-système Windows pour Linux), les gens suggèrent que nous devons utiliser le backend Agg et simplement sauvegarder les images, et non afficher les parcelles.

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

Comment pourrions-nous l'obtenir là où plt.show () nous montrerait une image? Mon option actuelle est de remplacer plot.show () pour simplement sauvegarder un plot-148123456.png sous/mnt/c/Utilisateurs/james/plots/dans des fenêtres et d’avoir une fenêtre Explorer ouverte pour visionner les images.

Je suppose que je pourrais héberger ce dossier et utiliser un navigateur.

Mon objectif est de pouvoir exécuter des exemples simples, tels que le code ci-dessus, sans changer le code en ftp les images quelque part, etc. Je veux simplement que l'intrigue s'affiche dans une fenêtre.

Quelqu'un a-t-il trouvé une façon décente de le faire?

31
AwokeKnowing

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

  1. Téléchargez et installez Xming (X11 pour Windows) depuis Sourceforge ou VcXsrv (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 dépendant de la python que vous utilisez)
  4. pip install matplotlib _ (pour matplotlib. mais beaucoup d'autres choses fonctionnent aussi maintenant)
  5. export DISPLAY=localhost:0.0 (ajouter à ~/.bashrc rendre permanent)

Quoi qu'il en soit, après tout cela, ce code fonctionnant sous ubuntu sur wsl fonctionnait 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: enter image description here

C’est peut-être préférable de le faire avec un ordinateur Jupyter ou quelque chose du genre, mais il est agréable d’avoir une ligne de commande de base python matplotlib dans Ubuntu pour Windows sur Subsystem pour Linux, ce qui permet à de nombreuses autres applications gui de fonctionner aussi.

Edit 2019-09-04 : Aujourd'hui, je rencontrais des problèmes liés à l'impossibilité 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. Il suffit d’installer à partir de https://sourceforge.net/projects/vcxsrv/ et d’exécuter xlaunch.exe, de sélectionner plusieurs fenêtres, puis de nouveau en ordre, puis de nouveau. Ensuite, tout a fonctionné.

50
AwokeKnowing

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

  1. vcXsrv installé sous Windows (mais les choses devraient fonctionner de la même façon avec Xming)
  2. réglez DISPLAY comme indiqué ci-dessus [export DISPLAY=localhost:0.0 _ (ajoutez à ~/.bashrc pour rendre permanent)]
  3. réalisé Sudo pip uninstall matplotlib
  4. suivi par Sudo apt install python-matplotlib
  5. matplotlibrc mis à jour pour lire backend : GTKAgg (plutôt que backend : agg)
  6. J'ai aussi couru Sudo apt-get install python-gtk2-dev, mais cela peut ne pas être nécessaire.

Désinstallation de matplotlib installé par pip et réinstallation via apt semble être nécessaire car pip n'inclut pas les extensions C nécessaires à l'exécution de GTK, contrairement à la version apt.

5
marisano

J'ai trouvé la meilleure approche consiste à installer Jupyter sur un sous-système Windows pour Linux (WSL) en suivant

Sudo apt update && upgrade
Sudo apt install python3 python3-pip ipython3

Maintenant, vous pouvez installer matplotlib

pip3 install matplotlib

Et le cahier Jupyter

pip3 install jupyter

Cochez ce lien si vous avez besoin de plus d'informations Configuration de Python sur le sous-système Windows pour Linux (WSL)

0
Gabriel Hernandez