GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Matplotlib-Plots (und andere GUI) in Ubuntu (WSL1 &WSL2) anzeigen

Diagramme können auch auf WSL mit Visual Studio Code angezeigt werden, das ab der Version vom Juni 2019 einen „Plot Viewer“ enthält.

Fügen Sie in einer normalen .py-Datei eine Kommentarzeichenfolge #%% ein markiert den Code als Jupyter (IPython)-Zelle und eine Codelinse zeigt Optionen bis Run Cell an . Darüber hinaus beinhaltet das Rechtsklicken in eine Python-Datei die Option:

Aktuelle Datei im interaktiven Python-Fenster ausführen

Aus der Version von VS Code vom Juni 2019:

Das Update vom Juni 2019 enthielt einen brandneuen Plot Viewer, mit dem beliebige Bildplots bearbeitet werden können, z. B. die beliebten Matplotlib-Plots.

Sie können es ausprobieren, indem Sie auf die Diagramme doppelklicken oder auf die Schaltfläche „Bild erweitern“ klicken, die angezeigt wird, wenn Sie im interaktiven Python-Fenster über Diagrammbilder fahren:

Mit dem Plot Viewer können Sie in der aktuellen Sitzung schwenken, vergrößern/verkleinern, durch Plots navigieren und Plots in die Formate PDF, SVG oder PNG exportieren.


Ok, also ich habe es wie folgt zum Laufen gebracht. Ich habe Ubuntu unter Windows, mit installiertem Anaconda Python 3.6.

  1. VcXsrv oder Xming (X11 für Windows) von sourceforge herunterladen und installieren (siehe Bearbeitung unten)
  2. sudo apt-get update
  3. sudo apt-get install python3.6-tk (Möglicherweise müssen Sie einen anderen python*-tk installieren abhängig von der verwendeten Python-Version)
  4. pip install matplotlib (für matplotlib. aber viele andere Dinge funktionieren jetzt auch)
  5. export DISPLAY=localhost:0.0 (zu ~/.bashrc hinzufügen dauerhaft zu machen. siehe WSL2 unten)

Wie auch immer, nach all dem funktionierte dieser Code, der in Ubuntu auf wsl ausgeführt wurde, so wie er ist:

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

Ergebnis:

Vielleicht geht das besser über ein Jupyter-Notebook oder so, aber es ist schön, grundlegende Befehlszeilen-Python-Matplotlib-Funktionalität in Ubuntu für Windows auf einem Subsystem für Linux zu haben, und dadurch funktionieren auch viele andere GUI-Apps.

Zum Beispiel können Sie xeyes installieren, und es wird gesagt, dass x11-Apps installiert werden sollen, und durch die Installation wird GTK installiert, das viele GUI-Apps verwenden. Aber der Punkt ist, sobald Sie Ihr DISPLAY richtig eingestellt haben und Ihren X-Server unter Windows, dann funktionieren die meisten Dinge, die auf einem nativen Ubuntu funktionieren würden, für die WSL.

Bearbeiten 04.09.2019 :Heute hatte ich Probleme mit "Bildschirmressourcen konnten nicht abgerufen werden", nachdem einige Bibliotheken aktualisiert wurden. Also habe ich VcXsrv installiert und das anstelle von Xming verwendet. Einfach von https://sourceforge.net/projects/vcxsrv/ installieren und xlaunch.exe ausführen, mehrere Fenster auswählen, weiter weiter weiter ok. Dann hat alles geklappt.

Bearbeitung für WSL 2-Benutzer am 23.06.2020 WSL2 (derzeit Insider Fast Ring) hat GPU/Docker-Unterstützung, also lohnt sich ein Upgrade. Allerdings läuft es in vm. Befolgen Sie für WSL 2 die gleichen Schritte 1–4 und dann:

  1. Die IP ist nicht localhost. es ist in resolv.conf, also führe es stattdessen aus (und füge es in ~/.bashrc ein):
 export DISPLAY=`grep -oP "(?<=nameserver ).+" /etc/resolv.conf`:0.0
  1. Überprüfen Sie jetzt die Firewall:Windows-Sicherheit -> Firewall &Netzwerkschutz -> Eine App durch die Firewall zulassen -> Stellen Sie sicher, dass VcXsrv sowohl öffentlich als auch privat aktiviert hat. (Beim ersten Start von xlaunch erhalten Sie möglicherweise eine Aufforderung, die Firewall zuzulassen. Dies funktioniert auch. Wenn VcXsrv nicht in der Liste der Apps enthalten ist, können Sie es manuell hinzufügen, z. B. von 'C:\Programme\vcxsrv\vcxsrv .exe')
  2. Starten Sie VcXsrv mit aktiviertem "Zugriffskontrolle deaktivieren"

Hinweis:Einige WSL2-Benutzer haben Fehler wie couldn't connect to display "172.x.x.x:0" erhalten . Versuchen Sie in diesem Fall, die in DISPLAY gespeicherte IP-Adresse mit diesem Befehl zu überprüfen:echo $DISPLAY . Wenn die angezeigte IP falsch zu sein scheint (z. B. "8.8.8.8" oder eine andere nicht funktionierende IP-Adresse), müssen Sie den Code in ~/.bashrc ändern zeigte in Punkt 5 etwas, das die IP-Adresse Ihrer Instanz erhält. Ein Benutzer sagte, dies habe funktioniert:export DISPLAY=$(ifconfig | grep inet | awk '{print $2}' | head -n 1 | awk '{print $0":0"}') . Bei einigen anderen hat es jedoch nicht funktioniert. YMMV, aber finden Sie einfach Ihre IP und verwenden Sie if für DISPLAY. Für die meisten WSL2-Benutzer funktioniert der Befehl in #5.

Bearbeiten für Windows 11 :Wenn MS Sie davon überzeugt hat, Ihren alten Computer wegzuwerfen und einen mit TPM zu kaufen, und Sie Windows 11 haben, erhalten Sie die GUI kostenlos. Ich hoffe, sie fügen einen Upgrade-Pfad hinzu, um dies unter Windows 10 zu tun, da Win10 wie XP sein und lange halten wird, seit MS entschieden hat, dass Sie einen neueren Computer benötigen, obwohl Win11 auf alten Computern gut funktionieren würde.


Für WSL2 Unter Verwendung von Ubuntu Focal Fossa habe ich VcXsrv heruntergeladen und installiert unter Windows. Ich verwende diese Konfiguration:

Ich weiß es nicht für Natives OpenGL aber es scheint wichtig, die Zugriffskontrolle zu deaktivieren.

Jetzt müssen Sie die Umgebungsvariable DISPLAY exportieren in der WSL.

Ich habe die richtige Adresse in /etc/resolv.conf gefunden , sondern die in ifconfig gefundene Ergebnis nicht. Der folgende Befehl funktioniert also nicht für mich:

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

Diese IP-Adresse finden Sie auch im Befehl ipconfig in CMD.exe Befehlskontext. Suchen Sie nach vEthernet (WSL) , das sollte es sein.

Jetzt können Sie testen, ob alles funktioniert, indem Sie einfach xcalc in Ihrer WSL-Umgebung ausführen. Wenn xcalc nicht vorhanden ist, installieren Sie es:

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

Der Befehl xcalc sollte unter Windows eine Anwendung öffnen, die wie folgt aussieht:

Wenn es funktioniert, bedeutet dies, dass die Verbindung zu Ihrem X-Server möglich ist, aber Sie müssen möglicherweise ein zusätzliches Paket für Python installieren, wie zum Beispiel:

sudo apt-get install python3.x-tk

Ändern Sie .x entsprechend Ihrer Python-Version.


Damit matplotlib mit GTKAgg unter Bash unter Ubuntu unter Windows funktioniert , ich:

  1. VcXsrv unter Windows installiert (mit Xming sollte es aber genauso funktionieren)
  2. stellen Sie DISPLAY wie oben beschrieben ein [export DISPLAY=localhost:0.0 (zu ~/.bashrc hinzufügen, um es dauerhaft zu machen)]
  3. sudo pip uninstall matplotlib ausgeführt
  4. gefolgt von sudo apt install python-matplotlib
  5. matplotlibrc aktualisiert, um backend : GTKAgg zu lesen (anstatt backend : agg )
  6. Ich habe auch sudo apt-get install python-gtk2-dev ausgeführt , dies ist jedoch möglicherweise nicht erforderlich.

Die Deinstallation der pip-installierten matplotlib und Neuinstallation über apt scheint notwendig zu sein, da pip die zum Ausführen von GTK erforderlichen C-Erweiterungen nicht enthält, die apt-Version jedoch schon.


Linux
  1. Dual-Boot Ubuntu und Windows 10

  2. So installieren und verwenden Sie FFmpeg unter Ubuntu 20.04

  3. Wie kann man Windows XP und Ubuntu dual booten?

  4. Dualboot von Windows 8 und Ubuntu 12.04?

  5. WSL2 und Kali

So installieren Sie Ansible auf Ubuntu und anderen Linux-Distributionen

So führen Sie Linux-GUI-Apps unter Windows 10 mit WSL und WSLg aus

Ubuntu jetzt im Windows Store:Updates für Linux unter Windows 10 und wichtige Tipps

Remotezugriff auf Windows 10 über Ubuntu Linux und Vise Versa

Wie vernetzt man Ubuntu und Windows 10?

Wie teilt man Dateien zwischen Ubuntu und Windows 10?