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 baik
Jawaban:
IPython memiliki profil untuk konfigurasi, terletak di ~/.ipython/profile_*
. Profil default dipanggil profile_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"
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.
%matplotlib
atau apakah keduanya mengatur backend default dan secara otomatis mengaturnya untuk digunakan segera di Lingkungan iPython.
matplotlib
vs pylab
, 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 seperti import numpy as np; import pandas as pd; import matplotlib.pyplot as plt
, dll NB: pylab
ini bukan hal yang sama seperti pyplot
. 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:
ipython notebook --matplotlib=inline
Jika Anda tidak suka mengetik di baris cmd setiap saat, Anda dapat membuat alias untuk melakukannya untuk Anda.
matplotlib=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 ini
pylab = 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 ini
$ jupyter kernelspec list
Available kernels:
python3 /Users/tarunlalwani/Documents/Projects/SO/notebookinline/bin/../share/jupyter/kernels/python3
Ini 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
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 menggunakan dir()
perintah untuk memverifikasi modul mana yang ada di namespace global.
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.