Plot juga dapat dilihat di WSL menggunakan Visual Studio Code, yang pada rilis Juni 2019, menyertakan "Penampil Plot".
Dalam file .py biasa, masukkan string komentar #%%
menandai kode sebagai sel Jupyter (IPython) dan lensa kode menampilkan opsi untuk Run Cell
. Selain itu, mengklik kanan di dalam file Python menyertakan opsi:
Jalankan File Saat Ini di Jendela Interaktif Python
Dari rilis VS Code Juni 2019:
Pembaruan Juni 2019 menyertakan Penampil Plot baru yang dapat digunakan untuk memanipulasi plot gambar apa pun, seperti plot matplotlib yang populer.
Anda dapat mencobanya dengan mengeklik dua kali plot atau mengeklik tombol “perluas gambar” yang ditampilkan saat Anda mengarahkan kursor ke gambar plot di Jendela Interaktif Python:
Dengan penampil plot, Anda dapat menggeser, memperbesar/memperkecil, menavigasi plot dalam sesi saat ini, dan mengekspor plot ke format PDF, SVG, atau PNG.
Oke, jadi saya membuatnya berfungsi sebagai berikut. Saya memiliki Ubuntu di windows, dengan anaconda python 3.6 terinstal.
- Unduh dan pasang VcXsrv atau Xming (X11 untuk Windows) dari sourceforge(lihat edit di bawah)
sudo apt-get update
sudo apt-get install python3.6-tk
(Anda mungkin harus memasangpython*-tk
yang berbeda tergantung pada versi python yang Anda gunakan)pip install matplotlib
(untuk matplotlib. tetapi banyak hal lain sekarang juga berfungsi)export DISPLAY=localhost:0.0
(tambahkan ke~/.bashrc
untuk membuat permanen. lihat WSL2 di bawah)
Ngomong-ngomong, setelah semua itu, kode ini berjalan di ubuntu di wsl berfungsi seperti:
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()
hasil:
Mungkin ini lebih baik dilakukan melalui notebook Jupyter atau semacamnya, tetapi bagus untuk memiliki fungsionalitas dasar baris perintah python matplotlib di Ubuntu untuk Windows di Subsistem untuk Linux, dan ini membuat banyak aplikasi gui lainnya juga berfungsi.
Misalnya Anda dapat menginstal xeyes, dan ia akan mengatakan untuk menginstal aplikasi x11 dan menginstal yang akan menginstal GTK yang digunakan oleh banyak aplikasi GUI. Tetapi intinya adalah setelah DISPLAY Anda disetel dengan benar, dan server x Anda di windows, maka sebagian besar hal yang berfungsi di ubuntu asli akan berfungsi untuk WSL.
Edit 04-09-2019 :Hari ini saya mengalami masalah dengan 'tidak dapat memperoleh sumber daya layar' setelah memutakhirkan beberapa perpustakaan. Jadi saya menginstal VcXsrv dan menggunakannya sebagai pengganti Xming. Instal saja dari https://sourceforge.net/projects/vcxsrv/ dan jalankan xlaunch.exe, pilih beberapa jendela, next next next ok. Kemudian semuanya bekerja.
Edit untuk pengguna WSL 2 23-06-2020 WSL2 (saat ini insider fast ring) memiliki dukungan GPU/docker sehingga layak untuk ditingkatkan. Namun itu berjalan di vm. Untuk WSL 2, ikuti langkah yang sama 1-4 lalu:
- ip bukan localhost. itu ada di resolv.conf jadi jalankan ini sebagai gantinya (dan sertakan di ~/.bashrc):
export DISPLAY=`grep -oP "(?<=nameserver ).+" /etc/resolv.conf`:0.0
- Sekarang periksa ulang firewall:Keamanan Windows -> Firewall &perlindungan jaringan -> Izinkan aplikasi melalui firewall -> pastikan VcXsrv telah diperiksa publik dan pribadi. (Saat Meluncurkan xlaunch pertama kali, Anda mungkin mendapatkan prompt untuk mengizinkan melalui firewall. Ini juga berfungsi. Selain itu, jika VcXsrv tidak ada dalam daftar aplikasi, Anda dapat menambahkannya secara manual, misalnya dari 'C:\program files\vcxsrv\vcxsrv .exe')
- Luncurkan VcXsrv dengan mencentang "Nonaktifkan kontrol akses"
Catatan:beberapa pengguna WSL2 mendapatkan error seperti couldn't connect to display "172.x.x.x:0"
. Kalau begitu coba cek alamat IP yang tersimpan di DISPLAY dengan perintah ini:echo $DISPLAY
. Jika IP yang ditampilkan tampaknya salah (yaitu "8.8.8.8" atau alamat IP lain yang tidak berfungsi), Anda perlu mengubah kode di ~/.bashrc
ditunjukkan pada poin 5 ke sesuatu yang akan mendapatkan alamat ip instance Anda. Seorang pengguna mengatakan ini berhasil:export DISPLAY=$(ifconfig | grep inet | awk '{print $2}' | head -n 1 | awk '{print $0":0"}')
. Namun untuk beberapa orang lain itu tidak berhasil. YMMV, tetapi temukan saja IP Anda dan gunakan if untuk DISPLAY. Untuk sebagian besar pengguna WSL2, perintah di #5 berfungsi.
Edit untuk Windows 11 :jika MS meyakinkan Anda untuk membuang komputer lama Anda dan membelinya dengan TPM sehingga Anda mendapatkan Windows 11, Anda mendapatkan GUI secara gratis. Saya harap mereka menambahkan jalur pemutakhiran untuk melakukannya di Windows 10 karena Win10 akan seperti XP dan bertahan lama sejak MS memutuskan Anda memerlukan komputer terbaru meskipun Win11 akan berfungsi dengan baik di komputer lama.
Untuk WSL2 menggunakan rilis Ubuntu Focal Fossa, saya mengunduh dan menginstal VcXsrv di Windows. Saya menggunakan konfigurasi ini:
Saya tidak tahu untuk Native OpenGL tetapi tampaknya penting untuk menonaktifkan kontrol akses.
Sekarang, Anda perlu mengekspor variabel env DISPLAY
di WSL.
Saya menemukan alamat yang benar di /etc/resolv.conf
, tetapi yang ditemukan di ifconfig
hasilnya tidak. Jadi perintah berikut tidak berfungsi untuk saya:
export DISPLAY=$(ifconfig | grep inet | awk '{print $2}' | head -n 1 | awk '{print $0":0"}')
Alamat IP tersebut juga dapat ditemukan di perintah ipconfig
ke dalam CMD.exe
konteks perintah. Telusuri vEthernet (WSL)
, itu yang seharusnya.
Sekarang, Anda dapat menguji apakah semuanya berfungsi dengan hanya menjalankan xcalc di lingkungan WSL Anda. Jika xcalc tidak ada, instal:
sudo apt-get update && sudo apt-get install x11-apps
perintah xcalc akan membuka aplikasi yang terlihat seperti ini di Windows:
Jika berfungsi, itu berarti koneksi ke server X Anda dimungkinkan tetapi Anda mungkin perlu menginstal beberapa paket tambahan untuk Python seperti:
sudo apt-get install python3.x-tk
Ubah .x
sesuai dengan versi python Anda.
Agar matplotlib berfungsi dengan GTKAgg di Bash di Ubuntu di Windows , saya:
- memasang VcXsrv di bawah Windows (tetapi hal-hal seharusnya bekerja sama dengan Xming)
- setel DISPLAY seperti yang disebutkan di atas [
export DISPLAY=localhost:0.0
(tambahkan ke ~/.bashrc agar permanen)] - mengeksekusi
sudo pip uninstall matplotlib
- diikuti oleh
sudo apt install python-matplotlib
- matplotlibrc diperbarui untuk membaca
backend : GTKAgg
(bukanbackend : agg
) - Saya juga menjalankan
sudo apt-get install python-gtk2-dev
, tetapi ini mungkin tidak diperlukan.
Menghapus instalan matplotlib yang diinstal pip dan menginstalnya kembali melalui apt tampaknya diperlukan karena pip tidak menyertakan ekstensi C yang diperlukan untuk menjalankan GTK, tetapi versi apt menyertakannya.