Setiap kali saya meluncurkan IPython Notebook, perintah pertama yang saya jalankan adalah
%matplotlib inline
Apakah ada cara untuk mengubah file konfigurasi saya sehingga ketika saya meluncurkan IPython, secara otomatis dalam mode ini?
Setiap kali saya meluncurkan IPython Notebook, perintah pertama yang saya jalankan adalah
%matplotlib inline
Apakah ada cara untuk mengubah file konfigurasi saya sehingga ketika saya meluncurkan IPython, secara otomatis dalam mode ini?
ipython --matplotlib
lebih baikJawaban:
Cara konfigurasi
IPython memiliki profil untuk konfigurasi, terletak di
~/.ipython/profile_*
. Profil default dipanggilprofile_default
. Di dalam folder ini ada dua file konfigurasi utama:ipython_config.py
ipython_kernel_config.py
Tambahkan opsi sebaris untuk matplotlib ke
ipython_kernel_config.py
:c = get_config() # ... Any other configurables you want to set c.InteractiveShellApp.matplotlib = "inline"
matplotlib vs. pylab
Penggunaan
%pylab
untuk mendapatkan plotting sebaris tidak disarankan .Ini memperkenalkan semua jenis kotoran ke dalam namespace Anda yang tidak Anda butuhkan.
%matplotlib
di sisi lain, memungkinkan plotting inline tanpa memasukkan namespace Anda. Anda harus melakukan panggilan eksplisit untuk mengimpor matplotlib dan numpy.import matplotlib.pyplot as plt import numpy as np
Harga kecil untuk mengetik impor Anda secara eksplisit harus sepenuhnya diatasi oleh fakta bahwa Anda sekarang memiliki kode yang dapat direproduksi.
sumber
%matplotlib
atau apakah keduanya mengatur backend default dan secara otomatis mengaturnya untuk digunakan segera di Lingkungan iPython.matplotlib
vspylab
, iPython membuatnya sangat mudah untuk secara otomatis mengeksekusi kode python sewenang-wenang setiap kali Anda meluncurkan menggunakan Profil. Saya percaya itu adalah sangat umum untuk memiliki profil di mana Anda secara otomatis melakukan impor umum sepertiimport numpy as np; import pandas as pd; import matplotlib.pyplot as plt
, dll NB:pylab
ini bukan hal yang sama sepertipyplot
. Pasti butuh waktu sebulan untuk menyadarinya.ipython_kernel_config.py
, yang berisi opsi ini. Buat profil baru (ipython profile create test
) untuk mendapatkan default.c.InteractiveShellApp.matplotlib = "inline"
Saya pikir apa yang Anda inginkan adalah menjalankan perintah berikut dari baris perintah:
Jika Anda tidak suka mengetik di baris cmd setiap saat, Anda dapat membuat alias untuk melakukannya untuk Anda.
sumber
--matplotlib inline
dan hapus item --pylab. Lihat posting ini tentang alasan ipythonmatplotlib=inline
: Ini akan memperlambat setiap kernel yang Anda luncurkan, terlepas dari apakah Anda ingin menggunakan matplotlib.--matplotlib
atau--pylab
diabaikan.%pylab
atau%matplotlib
sebagai gantinya.Pengaturan dinonaktifkan di
Jupyter 5.X
dan lebih tinggi dengan menambahkan kode di bawah inipylab = Unicode('disabled', config=True, help=_(""" DISABLED: use %pylab or %matplotlib in the notebook to enable matplotlib. """) ) @observe('pylab') def _update_pylab(self, change): """when --pylab is specified, display a warning and exit""" if change['new'] != 'warn': backend = ' %s' % change['new'] else: backend = '' self.log.error(_("Support for specifying --pylab on the command line has been removed.")) self.log.error( _("Please use `%pylab{0}` or `%matplotlib{0}` in the notebook itself.").format(backend) ) self.exit(1)
Dan di versi sebelumnya, ini sebagian besar merupakan peringatan. Tapi ini bukan masalah besar karena Jupyter menggunakan konsep
kernels
dan Anda dapat menemukan kernel untuk proyek Anda dengan menjalankan perintah di bawah iniIni memberi saya jalur ke folder kernel. Sekarang jika saya membuka
/Users/tarunlalwani/Documents/Projects/SO/notebookinline/bin/../share/jupyter/kernels/python3/kernel.json
file tersebut, saya melihat sesuatu seperti di bawah ini{ "argv": [ "python", "-m", "ipykernel_launcher", "-f", "{connection_file}", ], "display_name": "Python 3", "language": "python" }
Jadi Anda bisa melihat perintah apa yang dijalankan untuk meluncurkan kernel. Jadi jika Anda menjalankan perintah di bawah ini
$ python -m ipykernel_launcher --help IPython: an enhanced interactive Python shell. Subcommands ----------- Subcommands are launched as `ipython-kernel cmd [args]`. For information on using subcommand 'cmd', do: `ipython-kernel cmd -h`. install Install the IPython kernel Options ------- Arguments that take values are actually convenience aliases to full Configurables, whose aliases are listed on the help line. For more information on full configurables, see '--help-all'. .... --pylab=<CaselessStrEnum> (InteractiveShellApp.pylab) Default: None Choices: ['auto', 'agg', 'gtk', 'gtk3', 'inline', 'ipympl', 'nbagg', 'notebook', 'osx', 'pdf', 'ps', 'qt', 'qt4', 'qt5', 'svg', 'tk', 'widget', 'wx'] Pre-load matplotlib and numpy for interactive use, selecting a particular matplotlib backend and loop integration. --matplotlib=<CaselessStrEnum> (InteractiveShellApp.matplotlib) Default: None Choices: ['auto', 'agg', 'gtk', 'gtk3', 'inline', 'ipympl', 'nbagg', 'notebook', 'osx', 'pdf', 'ps', 'qt', 'qt4', 'qt5', 'svg', 'tk', 'widget', 'wx'] Configure matplotlib for interactive use with the default matplotlib backend. ... To see all available configurables, use `--help-all`
Jadi sekarang jika kita memperbarui
kernel.json
file kita menjadi{ "argv": [ "python", "-m", "ipykernel_launcher", "-f", "{connection_file}", "--pylab", "inline" ], "display_name": "Python 3", "language": "python" }
Dan jika saya menjalankan
jupyter notebook
grafik secara otomatisinline
Perhatikan bahwa pendekatan di bawah ini juga masih berfungsi, di mana Anda membuat file di jalur di bawah ini
~ / .ipython / profile_default / ipython_kernel_config.py
c = get_config() c.IPKernelApp.matplotlib = 'inline'
Tetapi kelemahan dari pendekatan ini adalah bahwa ini berdampak global pada setiap lingkungan yang menggunakan python. Anda juga dapat menganggapnya sebagai keuntungan jika Anda ingin memiliki perilaku yang sama di seluruh lingkungan dengan satu perubahan.
Jadi pilihlah pendekatan yang ingin Anda gunakan berdasarkan kebutuhan Anda
sumber
Di
ipython_config.py
file Anda , cari baris berikut# c.InteractiveShellApp.matplotlib = None
dan
# c.InteractiveShellApp.pylab = None
dan hapus komentar mereka. Kemudian, ubah
None
ke backend yang Anda gunakan (saya gunakan'qt4'
) dan simpan file. Mulai ulang IPython, dan matplotlib serta pylab harus dimuat - Anda dapat menggunakandir()
perintah untuk memverifikasi modul mana yang ada di namespace global.sumber
Di (saat ini) IPython 3.2.0 (Python 2 atau 3)
Buka file konfigurasi di dalam folder tersembunyi .ipython
tambahkan baris berikut
c.IPKernelApp.matplotlib = 'inline'
tambahkan langsung setelahnya
sumber
Selanjutnya ke @Kyle Kel dan @DGrady, berikut adalah entri yang dapat ditemukan di
$HOME/.ipython/profile_default/ipython_kernel_config.py
(atau profil mana pun yang Anda buat)Perubahan
# Configure matplotlib for interactive use with the default matplotlib backend. # c.IPKernelApp.matplotlib = none
untuk
# Configure matplotlib for interactive use with the default matplotlib backend. c.IPKernelApp.matplotlib = 'inline'
Ini kemudian akan bekerja di sesi ipython qtconsole dan notebook.
sumber
Buat
.py
file apa saja yang~/.ipython/profile_default/startup/
mengandungget_ipython().magic('matplotlib inline')
sumber