GNU/Linux >> Znalost Linux >  >> Linux

Zobrazit grafy matplotlib (a další GUI) v Ubuntu (WSL1 a WSL2)

Grafy lze také zobrazit na WSL pomocí kódu Visual Studio, který od vydání z června 2019 obsahuje „Prohlížeč grafů“.

V běžném souboru .py vložení řetězce komentáře #%% označí kód jako buňku Jupyter (IPython) a čočka kódu zobrazí možnosti Run Cell . Kromě toho klepnutí pravým tlačítkem do souboru Python obsahuje možnost:

Spusťte aktuální soubor v interaktivním okně Pythonu

Z vydání VS Code z června 2019:

Aktualizace z června 2019 zahrnovala zcela nový Prohlížeč grafů, který lze použít k manipulaci s libovolnými obrázky, jako jsou oblíbené grafy matplotlib.

Můžete to vyzkoušet dvojitým kliknutím na grafy nebo kliknutím na tlačítko „rozbalit obrázek“, které se zobrazí, když najedete myší na obrázky v interaktivním okně Pythonu:

Pomocí prohlížeče výkresů můžete posouvat, přibližovat/oddalovat, procházet výkresy v aktuální relaci a exportovat výkresy do formátů PDF, SVG nebo PNG.


Dobře, takže jsem to zprovoznil následovně. Mám Ubuntu na Windows s nainstalovaným anaconda python 3.6.

  1. Stáhněte a nainstalujte VcXsrv nebo Xming (X11 pro Windows) ze sourceforge (viz úprava níže)
  2. sudo apt-get update
  3. sudo apt-get install python3.6-tk (možná budete muset nainstalovat jiný python*-tk v závislosti na verzi pythonu, kterou používáte)
  4. pip install matplotlib (pro matplotlib. ale mnoho dalších věcí nyní funguje také)
  5. export DISPLAY=localhost:0.0 (přidat do ~/.bashrc učinit trvalou. viz WSL2 níže)

Každopádně, po tom všem tento kód běžící v ubuntu na wsl fungoval tak, jak je:

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

výsledek:

Možná je to lepší udělat pomocí notebooku Jupyter nebo tak něco, ale je hezké mít základní funkce příkazového řádku python matplotlib v Ubuntu pro Windows na Subsystému pro Linux a díky tomu funguje i mnoho dalších gui aplikací.

Můžete například nainstalovat xeyes a řekne to nainstalovat x11-apps a instalací, která nainstaluje GTK, kterou používá mnoho aplikací GUI. Ale jde o to, že jakmile budete mít správně nastavený DISPLAY a x server na Windows, pak většina věcí, které by fungovaly na nativním ubuntu, bude fungovat pro WSL.

Upravit 4. 9. 2019 :Dnes jsem měl problémy s 'nelze získat zdroje obrazovky' po aktualizaci některých knihoven. Nainstaloval jsem tedy VcXsrv a použil jej místo Xming. Stačí nainstalovat z https://sourceforge.net/projects/vcxsrv/ a spustit xlaunch.exe, vybrat více oken, další další další ok. Pak vše fungovalo.

Upravit pro uživatele WSL 2 23. 6. 2020 WSL2 (aktuálně insider fast ring) má podporu GPU/docker, takže stojí za to upgradovat. Nicméně běží ve vm. Pro WSL 2 postupujte podle stejných kroků 1-4 a poté:

  1. IP není localhost. je to v resolv.conf, takže místo toho spusťte toto (a zahrňte do ~/.bashrc):
 export DISPLAY=`grep -oP "(?<=nameserver ).+" /etc/resolv.conf`:0.0
  1. Nyní znovu zkontrolujte bránu firewall:Zabezpečení systému Windows -> Brána firewall a ochrana sítě -> Povolit aplikaci přes bránu firewall -> ujistěte se, že VcXsrv má zaškrtnuté veřejné i soukromé. (Při prvním spuštění xlaunch se může zobrazit výzva k povolení přes firewall. Funguje to také. Pokud VcXsrv není v seznamu aplikací, můžete jej přidat ručně, např. z 'C:\program files\vcxsrv\vcxsrv .exe')
  2. Spusťte VcXsrv se zaškrtnutou možností „Zakázat řízení přístupu“

Poznámka:Několik uživatelů WSL2 dostalo chybu jako couldn't connect to display "172.x.x.x:0" . Pokud ano, zkuste zkontrolovat IP adresu uloženou v DISPLAY pomocí tohoto příkazu:echo $DISPLAY . Pokud se zobrazená IP zdá být nesprávná (tj. „8.8.8.8“ nebo jiná nefunkční IP adresa), musíte změnit kód v ~/.bashrc zobrazený v bodě 5 na něco, co získá IP adresu vaší instance. Jeden uživatel řekl, že to funguje:export DISPLAY=$(ifconfig | grep inet | awk '{print $2}' | head -n 1 | awk '{print $0":0"}') . U některých jiných to však nefungovalo. YMMV, ale stačí najít svou IP a použít if pro DISPLAY. Pro většinu uživatelů WSL2 funguje příkaz v #5.

Úpravy pro Windows 11 :Pokud vás MS přesvědčil, abyste vyhodili svůj starý počítač a koupili si počítač s TPM, a tak jste získali Windows 11, získáte GUI zdarma. Doufám, že přidají cestu upgradu, aby to udělali na Windows 10, protože Win10 bude jako XP a vydrží dlouho od doby, kdy se MS rozhodl, že potřebujete nejnovější počítač, i když Win11 by na starých počítačích fungoval dobře.


Pro WSL2 pomocí vydání Ubuntu Focal Fossa jsem si stáhl a nainstaloval VcXsrv na Windows. Používám tuto konfiguraci:

Nevím pro Nativní OpenGL ale zdá se důležité zakázat řízení přístupu.

Nyní musíte exportovat proměnnou env DISPLAY ve WSL.

Správnou adresu jsem našel v /etc/resolv.conf , ale ten, který se nachází v ifconfig výsledek není. Následující příkaz tedy nefunguje pro mě:

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

Tuto IP adresu lze také nalézt v příkazu ipconfig do CMD.exe příkazový kontext. Vyhledejte vEthernet (WSL) , to by měl být ten.

Nyní můžete otestovat, že vše funguje, pouhým spuštěním xcalc ve vašem WSL prostředí. Pokud xcalc není přítomen, nainstalujte jej:

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

Příkaz xcalc by měl ve Windows otevřít aplikaci, která vypadá takto:

Pokud to funguje, znamená to, že připojení k vašemu X-serveru je možné, ale možná budete muset nainstalovat nějaký extra balíček pro Python jako:

sudo apt-get install python3.x-tk

Změňte .x podle vaší verze pythonu.


Chcete-li, aby matplotlib fungoval s GTKAgg na Bash na Ubuntu ve Windows , já:

  1. nainstaloval VcXsrv pod Windows (ale věci by měly fungovat stejně jako Xming)
  2. nastavte DISPLAY, jak je uvedeno výše [export DISPLAY=localhost:0.0 (přidat do ~/.bashrc, aby byl trvalý)]
  3. provedeno sudo pip uninstall matplotlib
  4. následuje sudo apt install python-matplotlib
  5. aktualizoval matplotlibrc na čtení backend : GTKAgg (spíše než backend : agg )
  6. Také jsem spustil sudo apt-get install python-gtk2-dev , ale to nemusí být nutné.

Zdá se, že je nutné odinstalovat matplotlib nainstalovaný pipem a znovu jej nainstalovat přes apt, protože pip neobsahuje rozšíření C potřebná ke spuštění GTK, ale verze apt ano.


Linux
  1. Jak nainstalovat a používat FFmpeg na Ubuntu 20.04

  2. Dualbooting Windows 8 a Ubuntu 12.04?

  3. WSL2 a Kali

  1. Duální spouštění Ubuntu a Windows 10

  2. Jak duální spouštění Windows Xp a Ubuntu?

  3. Jak povolit systemd na WSL2:Ubuntu 20 a CentOS 8

  1. Duální spouštění Ubuntu Linux a Windows 7

  2. Jak třídit soubory v Ubuntu (GUI a Shell)

  3. Jak nainstalovat Netbeans na Ubuntu a další Linux