2017-04-13 28 views
8

Wygląda na to, że w systemie Ubuntu dla Windows (podsystem Windows dla Linuksa) ludzie sugerują, że musimy używać Aggowego backendu i po prostu zapisywać obrazy, nie pokazywać fabuł.Pokaż działki matplotlib w systemie Ubuntu (podsystem Windows dla systemu Linux)

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 

W jaki sposób możemy go doprowadzić do miejsca, w którym plt.show() wyświetli nam obrazek? Moją obecną opcją jest przesłonięcie metody plot.show(), aby zamiast tego zapisywać tylko działka-148123456.png pod/mnt/c/Users/james/działki/w oknach i po prostu mieć otwarte okno przeglądarki, oglądające obrazy.

Przypuszczam, że mógłbym hostować ten folder i używać przeglądarki.

Moim celem jest być w stanie uruchomić proste przykłady, takie jak powyższy kod, bez zmiany kodu na ftp obrazów gdzieś itp. Po prostu chcę, aby działka pojawiła się w oknie.

Czy ktoś wymyślił przyzwoity sposób to zrobić?

+0

W [to pytanie] (http://stackoverflow.com/questions/40566837/no-plot-window-in-matplotlib-in-linux- shell-windows) 10) odpowiedź mówi, że możliwe byłoby użyj xming w tym celu. Możesz również rozważyć zadawanie podobnego pytania w SuperUser (nie koncentrując się jednak zbytnio na matplotlib). – ImportanceOfBeingErnest

Odpowiedz

8

Ok, więc mam to działa w następujący sposób, chociaż niektóre kroki mogą nie być konieczne. Mam Ubuntu na Windows, z anaconda python 3.6 zainstalowanego

  1. Google "Xming" (serwer x11) i pobierz (od SourceForge)/zainstalować/uruchomić
  2. sudo apt-get install x11-apps
  3. export DISPLAY=localhost:0.0 (dodaj do ~/.bashrc dokonania stały)
  4. sudo apt-get install gnome-calculator (aby uzyskać GTK)
  5. edit matplotlibrc i zmienić backend: do backend: TkAgg

dla mnie matplotlibrc był w /home/james/anaconda3/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc

Zauważ, że GTKAgg nie działa, więc krok 4 może być bezcelowe, nie jestem pewien. Gnome-calulator działało, więc GTK wydaje się działać, ale mówi, że wymaga pygtk, ale pip install pygtk nie działa.

Tak czy inaczej, po tym wszystkim, ten kod działa w ubuntu na WSL pracował jako to:

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

`` `

wynik: enter image description here

Mam wrażenie, to jest lepsze zrobione przez notebook Jupyter lub coś takiego, ale miło jest mieć podstawową funkcjonalność python matplotlib w systemie Ubuntu dla Windows w podsystemie dla Linuksa

EDYCJA: Dziś uruchomiłem następujące polecenie, które zainstalowało Qt5 jako tylny koniec, i działa dobrze z Qt5Agg jako back-end (vs TkAgg).Może to być pomocne, jeśli używasz pewne rzeczy jeszcze na WSL, który wymaga Qt5

sudo apt-get update && sudo apt-get install qtbase5-dev

Ponadto, aby znaleźć matplotlibrc i polecenia typu zachęty:

python import matplotlib print(matplotlib.matplotlib_fname()) quit()

+2

Po prostu musiałem zainstalować xming po stronie Windows & 'sudo apt-get install python-tk' po stronie ubuntu - wtedy dobrze było przejść po ustawieniu DISPLAY. – AlistairH

+0

@AlistairH Do czego służy DISPLAY? – ScheissSchiesser

+0

'DISPLAY = localhost: 0.0', jak w powyższej odpowiedzi. – AlistairH

1

Aby uzyskać matplotlib do pracy z GTKAgg na Bash na Ubuntu na Windows, I:

  1. zainstalowany VcXsrv pod Windows (ale wszystko powinno działać tak samo z Xming)
  2. zestaw WYŚWIETLACZ jak wspomniano powyżej [export DISPLAY=localhost:0.0 (dodaj do ~/.bashrc, aby stały)]
  3. wykonany sudo pip uninstall matplotlib
  4. następnie sudo apt install python-matplotlib
  5. zaktualizowano matplotlibrc do odczytu backend : GTKAgg (zamiast backend : agg)
  6. Przeprowadziłem także sudo apt-get install python-gtk2-dev, ale może to nie być konieczne.

Uninstalling the pip-installed matplotlib and reinstalling it via apt wydaje się być konieczne, ponieważ pip nie zawiera rozszerzeń C niezbędnych do uruchomienia GTK, ale wersja apt działa.

+1

początek pliku Pythona: import matplotlib; matplotlib.use ("GTKAgg"); nie zapomnij uruchomić VcXsrc. Pominąłem krok 6., dzięki! – Jason

+0

@Jason: Zaktualizowałem moje 'matplotlibrc' (krok 5), aby domyślnie używać' GTKAgg' zamiast jawnie ustawiać atrybut 'matplotlib use', ale podoba mi się Twój wariant. Ponadto, dobry punkt o sprawdzeniu, czy VcXsvr jest uruchomiony. Cieszę się, że mogłem pomóc! – marisano

+0

Zwróć uwagę, że 'mobaXtrem' ma wbudowany xserver, którego można użyć zamiast instalować' VcXsrv'. https://nickjanetakis.com/blog/using-wsl-and-mobaxterm-to-create-a-linux-dev-environment-on-windows – oak