Za każdym razem, gdy uruchamiam Notatnik IPython, pierwsze polecenie, które wykonuję, to
%matplotlib inline
Czy jest jakiś sposób na zmianę mojego pliku konfiguracyjnego, aby po uruchomieniu IPython był automatycznie w tym trybie?
Za każdym razem, gdy uruchamiam Notatnik IPython, pierwsze polecenie, które wykonuję, to
%matplotlib inline
Czy jest jakiś sposób na zmianę mojego pliku konfiguracyjnego, aby po uruchomieniu IPython był automatycznie w tym trybie?
ipython --matplotlib
jest lepszeOdpowiedzi:
Sposób konfiguracji
IPython ma profile do konfiguracji, znajdujące się pod adresem
~/.ipython/profile_*
. Nazwa profilu domyślnegoprofile_default
. W tym folderze znajdują się dwa podstawowe pliki konfiguracyjne:ipython_config.py
ipython_kernel_config.py
Dodaj opcję inline dla matplotlib do
ipython_kernel_config.py
:c = get_config() # ... Any other configurables you want to set c.InteractiveShellApp.matplotlib = "inline"
matplotlib vs. pylab
Odradza się korzystanie z funkcji w
%pylab
celu drukowania w wierszu .Wprowadza do przestrzeni nazw wszelkiego rodzaju śmieci, których po prostu nie potrzebujesz.
%matplotlib
z drugiej strony umożliwia kreślenie w tekście bez wprowadzania przestrzeni nazw. Będziesz musiał wykonać jawne wywołania, aby zaimportować matplotlib i numpy.import matplotlib.pyplot as plt import numpy as np
Niewielka cena jawnego wpisywania importu na maszynie powinna zostać całkowicie przezwyciężona faktem, że masz teraz odtwarzalny kod.
źródło
%matplotlib
czy też ustawia domyślny backend i automatycznie konfiguruje go do natychmiastowego użycia w Środowisko iPython.matplotlib
vspylab
, iPython bardzo ułatwia automatyczne wykonywanie dowolnego kodu Pythona za każdym razem, gdy uruchamiasz za pomocą Profiles. Uważam, że profil, w którym automatycznie wykonuje się wspólne importowanie, np.import numpy as np; import pandas as pd; import matplotlib.pyplot as plt
Itp., Jest dość powszechny . Uwaga:pylab
to nie to samo copyplot
. Zrozumienie tego musiało zająć mi miesiąc.ipython_kernel_config.py
, który zawiera tę opcję. Utwórz nowy profil (ipython profile create test
), aby uzyskać domyślny.c.InteractiveShellApp.matplotlib = "inline"
Myślę, że chcesz uruchomić następujące polecenie z wiersza poleceń:
Jeśli nie lubisz wpisywać go za każdym razem w wierszu cmd, możesz utworzyć alias, który zrobi to za Ciebie.
źródło
--matplotlib inline
i usuń rzeczy --pylab. Zobacz ten post dotyczący ipython devel why: carreau.github.io/posts/10-No-PyLab-Thanks.ipynb.htmlmatplotlib=inline
: Spowolni to każde uruchamiane jądro, niezależnie od tego, czy chcesz używać matplotlib.--matplotlib
lub--pylab
są ignorowane.%pylab
lub%matplotlib
.To ustawienie zostało wyłączone w wersjach
Jupyter 5.X
i nowszych, dodając poniższy kodpylab = 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)
W poprzednich wersjach było to głównie ostrzeżenie. Ale to nie jest duży problem, ponieważ Jupyter używa koncepcji
kernels
i możesz znaleźć jądro dla swojego projektu, uruchamiając poniższe polecenieTo daje mi ścieżkę do folderu jądra. Jeśli teraz otworzę
/Users/tarunlalwani/Documents/Projects/SO/notebookinline/bin/../share/jupyter/kernels/python3/kernel.json
plik, widzę coś takiego jak poniżej{ "argv": [ "python", "-m", "ipykernel_launcher", "-f", "{connection_file}", ], "display_name": "Python 3", "language": "python" }
Możesz więc zobaczyć, jakie polecenie jest wykonywane, aby uruchomić jądro. Więc jeśli uruchomisz poniższe polecenie
$ 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`
Więc teraz, jeśli zaktualizujemy nasz
kernel.json
plik do{ "argv": [ "python", "-m", "ipykernel_launcher", "-f", "{connection_file}", "--pylab", "inline" ], "display_name": "Python 3", "language": "python" }
A jeśli uruchomię
jupyter notebook
wykresy są automatycznieinline
Zauważ, że poniższe podejście również działa, w którym tworzysz plik w poniższej ścieżce
~ / .ipython / profile_default / ipython_kernel_config.py
c = get_config() c.IPKernelApp.matplotlib = 'inline'
Jednak wadą tego podejścia jest to, że ma to globalny wpływ na każde środowisko używające Pythona. Możesz to uznać za zaletę również wtedy, gdy chcesz mieć wspólne zachowanie w różnych środowiskach z jedną zmianą.
Wybierz podejście, które chcesz zastosować, w oparciu o swoje wymagania
źródło
W
ipython_config.py
pliku wyszukaj następujące wiersze# c.InteractiveShellApp.matplotlib = None
i
# c.InteractiveShellApp.pylab = None
i odkomentuj je. Następnie przejdź
None
do używanego zaplecza (używam'qt4'
) i zapisz plik. Zrestartuj IPython i powinny zostać załadowane matplotlib i pylab - możesz użyćdir()
polecenia, aby sprawdzić, które moduły znajdują się w globalnej przestrzeni nazw.źródło
W (bieżącym) IPythonie 3.2.0 (Python 2 lub 3)
Otwórz plik konfiguracyjny w ukrytym folderze .ipython
dodaj następujący wiersz
c.IPKernelApp.matplotlib = 'inline'
dodaj to zaraz po
źródło
Oprócz @Kyle Kelley i @DGrady, oto wpis, który można znaleźć w
$HOME/.ipython/profile_default/ipython_kernel_config.py
(lub dowolny profil, który utworzyłeś)Zmiana
# Configure matplotlib for interactive use with the default matplotlib backend. # c.IPKernelApp.matplotlib = none
do
# Configure matplotlib for interactive use with the default matplotlib backend. c.IPKernelApp.matplotlib = 'inline'
Będzie to działać zarówno w sesjach ipython qtconsole, jak i notebook.
źródło
Utwórz dowolny
.py
plik w~/.ipython/profile_default/startup/
zawierającymget_ipython().magic('matplotlib inline')
źródło