Tujuan “% matplotlib inline”

483

Bisakah seseorang menjelaskan kepada saya apa sebenarnya gunanya %matplotlib inline?

Rishabh
sumber
22
Ini adalah fungsi ajaib yang membuat gambar dalam buku catatan (alih-alih menampilkan tumpukan objek gambar). Tutorial Matplotlib sederhana ditemukan di sini data-blogger.com/2017/11/15/… .
www.data-blogger.com
7
Anda dapat memeriksa backends tersedia (seperti inline) oleh masuk: %matplotlib --list.
Luis
1
Kemungkinan rangkap dari Cara membuat notebook IPython matplotlib plot inline
desertnaut

Jawaban:

286

%matplotlibadalah fungsi ajaib di IPython. Saya akan mengutip dokumentasi yang relevan di sini untuk Anda baca agar nyaman:

IPython memiliki seperangkat 'fungsi ajaib' yang telah ditentukan yang dapat Anda panggil dengan sintaks gaya baris perintah. Ada dua macam sihir, berorientasi garis dan berorientasi sel. Magics baris diawali dengan karakter% dan bekerja sangat mirip dengan panggilan baris perintah OS: mereka mendapatkan sebagai argumen sisa baris, di mana argumen dilewatkan tanpa tanda kurung atau tanda kutip. Magics Lines dapat mengembalikan hasil dan dapat digunakan di sisi kanan tugas. Magics sel diawali dengan %% ganda, dan mereka adalah fungsi yang mendapatkan sebagai argumen tidak hanya sisa baris, tetapi juga baris di bawahnya dalam argumen terpisah.

%matplotlib inline set backend dari matplotlib ke backend 'inline' :

Dengan backend ini, output dari perintah plotting ditampilkan inline di dalam frontend seperti notebook Jupyter, tepat di bawah sel kode yang memproduksinya. Plot yang dihasilkan kemudian akan disimpan dalam dokumen notebook.

Saat menggunakan backend 'inline', grafik matplotlib Anda akan dimasukkan dalam buku catatan Anda, di sebelah kode. Mungkin patut juga membaca Cara membuat notebook IPython matplotlib sebaris inline untuk referensi tentang cara menggunakannya dalam kode Anda.

Jika Anda ingin interaktivitas juga, Anda dapat menggunakan backend nbagg dengan %matplotlib notebook(dalam IPython 3.x), seperti dijelaskan di sini .

Aurora0001
sumber
4
% matplotlib inline ^ SintaksError: sintaks tidak valid
4
@Jadda Apakah Anda menggunakan IPython? Jika tidak, Anda akan mendapatkan kesalahan sintaksis, karena itu bukan CPython yang valid (interpreter 'standar' untuk Python). Tidak ada gunanya menggunakannya kecuali Anda menggunakan IPython Notebook, karena intinya adalah membuat plot sesuai dengan notebook.
Aurora0001
Iya. Saya menggunakan ini di Spyder IDE (Bagian dari Anaconda) untuk mengimplementasikan Tensorflow Object detection API
3
Dalam hal ini, @Jadda, sepertinya Anda memiliki pertanyaan baru untuk ditanyakan. Anda harus memasukkan semua detail yang relevan di sana sehingga Anda bisa mendapatkan lebih banyak perhatian untuk pertanyaan Anda daripada di komentar dari jawaban ini. Semoga berhasil.
Aurora0001
2
ok, tapi apa alternatifnya: bagaimana saya bisa melihat plot jika tidak ada sihir yang diaktifkan?
JaakL
77

Asalkan Anda menjalankan IPython, itu %matplotlib inlineakan membuat output plot Anda muncul dan disimpan di dalam notebook.

Menurut dokumentasi

Untuk mengatur ini, sebelum merencanakan atau mengimpor apa matplotlibpun dilakukan, Anda harus menjalankan %matplotlib magic command. Ini melakukan pengaturan di belakang layar yang diperlukan untuk IPython agar dapat bekerja bersama dengan benar matplotlib; Namun, itu tidak benar-benar menjalankan perintah impor Python, yaitu, tidak ada nama yang ditambahkan ke namespace.

Backend yang sangat menarik, disediakan oleh IPython, adalah inlinebackend. Ini hanya tersedia untuk Notebook Jupyter dan Jupyter QtConsole. Itu dapat dipanggil sebagai berikut:

%matplotlib inline

Dengan backend ini, output dari perintah plotting ditampilkan inline di dalam frontend seperti notebook Jupyter, tepat di bawah sel kode yang memproduksinya. Plot yang dihasilkan kemudian akan disimpan dalam dokumen notebook.

matusko
sumber
32

Jika Anda ingin menambahkan plot ke notebook Jupyter Anda, maka itu %matplotlib inlineadalah solusi standar. Dan ada perintah sihir lain yang akan digunakan secara matplotlibinteraktif di dalam Jupyter.

%matplotlib: pltperintah plot apa pun sekarang akan menyebabkan jendela gambar terbuka, dan perintah lebih lanjut dapat dijalankan untuk memperbarui plot. Beberapa perubahan tidak akan menggambar secara otomatis, untuk memaksa pembaruan, gunakanplt.draw()

%matplotlib notebook: akan menghasilkan plot interaktif yang tertanam di dalam notebook, Anda dapat memperbesar dan mengubah ukuran gambar

%matplotlib inline: hanya menggambar gambar statis di notebook

Yossarian42
sumber
7

Dimulai dengan IPython 5.0 dan matplotlib 2.0 Anda dapat menghindari penggunaan sulap khusus dan penggunaan IPython matplotlib.pyplot.ion()/matplotlib.pyplot.ioff()yang memiliki keuntungan bekerja di luar IPython juga.

ipython docs

Vicki B
sumber
Saya pikir ini berbeda dari mengubah backend. Kecuali jika backend inline, plot dibuat di jendela luar dan Anda perlu menggunakan display () untuk menunjukkannya di notebook.
Vincenzooo
5

Ini berarti bahwa setiap grafik yang kita buat sebagai bagian dari kode kita akan muncul di buku catatan yang sama dan tidak di jendela terpisah yang akan terjadi jika kita belum menggunakan pernyataan ajaib ini.

Arushi Jain
sumber
4

Jika Anda tidak tahu apa itu backend, Anda dapat membaca ini: https://matplotlib.org/tutorials/introductory/usage.html#backends

Beberapa orang menggunakan matplotlib secara interaktif dari cangkang python dan telah merencanakan jendela yang muncul ketika mereka mengetik perintah. Beberapa orang menjalankan notebook Jupyter dan menggambar plot inline untuk analisis data cepat. Lainnya menanamkan matplotlib ke antarmuka pengguna grafis seperti wxpython atau pygtk untuk membangun aplikasi yang kaya. Beberapa orang menggunakan matplotlib dalam skrip batch untuk menghasilkan gambar postscript dari simulasi numerik, dan yang lain menjalankan server aplikasi web untuk secara dinamis menyajikan grafik. Untuk mendukung semua kasus penggunaan ini, matplotlib dapat menargetkan keluaran yang berbeda, dan masing-masing kemampuan ini disebut backend; "frontend" adalah kode yang menghadap pengguna, yaitu kode plotting, sedangkan "backend" melakukan semua kerja keras di belakang layar untuk membuat gambar.

Jadi, ketika Anda mengetik% matplotlib inline, itu mengaktifkan backend inline. Seperti yang dibahas dalam posting sebelumnya:

Dengan backend ini, output dari perintah plotting ditampilkan inline di dalam frontend seperti notebook Jupyter, tepat di bawah sel kode yang memproduksinya. Plot yang dihasilkan kemudian akan disimpan dalam dokumen notebook.

Vihang Khare
sumber
3

Untuk menjelaskannya dengan jelas:

Jika Anda tidak suka seperti ini:

masukkan deskripsi gambar di sini

Menambahkan %matplotlib inline

masukkan deskripsi gambar di sini

dan di sana Anda memilikinya di notebook jupyter Anda.

prosti
sumber
2

TL; DR

%matplotlib inline - Menampilkan inline output


Kernel IPython memiliki kemampuan untuk menampilkan plot dengan mengeksekusi kode. Kernel IPython dirancang untuk bekerja dengan mulus dengan pustaka plot matplotlib untuk menyediakan fungsionalitas ini.

%matplotlibadalah perintah ajaib yang melakukan pengaturan di belakang layar yang diperlukan untuk IPython agar dapat bekerja dengan benar bersama-sama matplotlib; itu tidak menjalankan perintah impor Python, yaitu, tidak ada nama yang ditambahkan ke namespace.

Tampilkan output di jendela terpisah

%matplotlib

Tampilkan inline output

(hanya tersedia untuk Notebook Jupyter dan Jupyter QtConsole)

%matplotlib inline

Tampilan dengan backend interaktif

(nilai yang valid 'GTK3Agg', 'GTK3Cairo', 'MacOSX', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo', 'agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template')

%matplotlib gtk

Contoh - GTK3Agg - Agg rendering ke kanvas GTK 3.x (membutuhkan PyGObject dan pycairo atau cairocffi).

Lebih detail tentang backend interaktif matplotlib: di sini


Mulai dengan IPython 5.0dan matplotlib 2.0Anda dapat menghindari penggunaan sihir khusus IPython dan penggunaan matplotlib.pyplot.ion()/ matplotlib.pyplot.ioff() yang memiliki keuntungan bekerja di luar IPython juga.

Rujuk: IPython Rich Output - Plotting Interaktif

Ani Menon
sumber
Pertanyaan noob sungguhan di sini, maaf .... apa itu "IPython kernel" dan apa itu "magic command". Apakah Python tiba-tiba terbelah dan menjadi non-pythonic? Saya belum pernah mendengar konsep ini.
lb_so
Untuk notebook python (ipynb) - ipython kernal atau jupyter kernal adalah versi python (dan dependensi) yang akan digunakan oleh proyek. Anda dapat memulai notebook jupyter dan kemudian mengubah kernel untuk menjalankan sel dengan konfigurasi python yang berbeda dan mengkonfigurasi variabel lingkungan dan banyak lagi.
Ani Menon
@Ib_so Magic command adalah fitur ipython / jupyter. Baca lebih lanjut di sini.
Ani Menon
0

Asalkan Anda menjalankan Jupyter Notebook, perintah% matplotlib inline akan membuat output plot Anda muncul di notebook, juga dapat disimpan.

Ashiq Imran
sumber
-8

Tidak wajib menulis itu. Ini bekerja dengan baik untuk saya tanpa ( %matplotlib) fungsi ajaib. Saya menggunakan kompiler Sypder, yang ada di Anaconda.

pengguna9196865
sumber
13
Spyder adalah IDE, bukan kompiler.
Matthieu Brucher
3
Meskipun jawaban Anda tidak menjawab pertanyaan OP, itu menjawab pertanyaan saya. Terima kasih.
EngrStudent