Czy ktoś mógłby mi wyjaśnić, do czego dokładnie służy %matplotlib inline
?
Czy ktoś mógłby mi wyjaśnić, do czego dokładnie służy %matplotlib inline
?
Odpowiedzi:
%matplotlib
to magiczna funkcja w IPython. Przytoczę tutaj odpowiednią dokumentację, którą możesz przeczytać dla wygody:
IPython ma zestaw predefiniowanych „magicznych funkcji”, które można wywoływać za pomocą składni stylu wiersza poleceń. Istnieją dwa rodzaje magii, zorientowane liniowo i komórkowo. Magia linii jest poprzedzona znakiem% i działa podobnie jak wywołania wiersza poleceń systemu operacyjnego: jako argument przyjmują resztę wiersza, gdzie argumenty są przekazywane bez nawiasów lub cudzysłowów. Magia linii może zwracać wyniki i może być używana po prawej stronie zadania. Magia komórki poprzedzona jest podwójnym %% i są funkcjami, które jako argument otrzymują nie tylko resztę linii, ale także linie pod nią w osobnym argumencie.
%matplotlib inline
ustawia backend matplotlib na backend „inline” :
Dzięki temu backendowi wyjście poleceń drukowania jest wyświetlane wewnątrz nakładek, takich jak notatnik Jupyter, bezpośrednio pod komórką kodu, która go wytworzyła. Powstałe wykresy zostaną następnie zapisane w dokumencie notesu.
Podczas korzystania z backendu „inline” wykresy matplotlib zostaną umieszczone w notatniku obok kodu. Warto również przeczytać Jak zrobić wykres matplotlib w notatniku IPython, aby uzyskać informacje na temat używania go w kodzie.
Jeśli chcesz również interaktywności, możesz użyć backendu nbagg z %matplotlib notebook
(w IPython 3.x), jak opisano tutaj .
Pod warunkiem, że korzystasz z IPython, %matplotlib inline
spowoduje to, że wyniki wydruku będą wyświetlane i przechowywane w notebooku.
Zgodnie z dokumentacją
Aby to skonfigurować, przed wykonaniem jakiegokolwiek wydruku lub importu
matplotlib
należy wykonać polecenie%matplotlib magic command
. Wykonuje to niezbędną, zakulisową konfigurację, aby IPython działał poprawnie w parzematplotlib
; nie wykonuje jednak żadnych poleceń importu w Pythonie, to znaczy, że do przestrzeni nazw nie są dodawane żadne nazwy.Szczególnie interesującym backendem, dostarczanym przez IPython, jest
inline
backend. Ta opcja jest dostępna tylko dla Notatnika Jupyter i Jupyter QtConsole. Można go wywołać w następujący sposób:%matplotlib inline
Dzięki temu backendowi wyjście poleceń drukowania jest wyświetlane wewnątrz nakładek, takich jak notatnik Jupyter, bezpośrednio pod komórką kodu, która go wytworzyła. Powstałe wykresy zostaną następnie zapisane w dokumencie notesu.
Jeśli chcesz dodać wykresy do notatnika Jupyter, %matplotlib inline
jest to standardowe rozwiązanie. Są też inne magiczne polecenia, które będą używane matplotlib
interaktywnie w Jupyter.
%matplotlib
: dowolne plt
polecenie wydruku spowoduje teraz otwarcie okna figury i można uruchomić kolejne polecenia, aby zaktualizować wykres. Niektóre zmiany nie będą rysowane automatycznie, aby wymusić aktualizację, użyjplt.draw()
%matplotlib notebook
: doprowadzi do interaktywnych wykresów osadzonych w notatniku, możesz powiększać i zmieniać rozmiar figury
%matplotlib inline
: rysuj tylko statyczne obrazy w notatniku
Począwszy od IPython 5.0 i matplotlib 2.0 możesz uniknąć używania specyficznej magii IPython i używania,
matplotlib.pyplot.ion()/matplotlib.pyplot.ioff()
które ma tę zaletę, że działa również poza IPython.
inline
, wykresy są generowane w zewnętrznych oknach i musisz użyć display (), aby pokazać je w notatniku.
Jeśli nie wiesz, co to jest backend, możesz przeczytać: https://matplotlib.org/tutorials/introductory/usage.html#backends
Niektóre osoby używają matplotlib interaktywnie z powłoki Pythona i wyświetlają wyskakujące okna podczas pisania poleceń. Niektóre osoby używają notesów Jupyter i rysują wykresy w celu szybkiej analizy danych. Inni osadzają matplotlib w graficznych interfejsach użytkownika, takich jak wxpython lub pygtk, aby budować bogate aplikacje. Niektóre osoby używają matplotlib w skryptach wsadowych do generowania obrazów postscriptowych z symulacji numerycznych, a jeszcze inne uruchamiają serwery aplikacji internetowych w celu dynamicznego wyświetlania wykresów. Aby wesprzeć wszystkie te przypadki użycia, matplotlib może być ukierunkowany na różne dane wyjściowe, a każda z tych możliwości nazywana jest backendem; „frontend” to kod użytkownika, tj. kod kreślenia, podczas gdy „backend” wykonuje całą ciężką pracę za kulisami, aby wykonać rysunek.
Kiedy więc wpiszesz% matplotlib inline, aktywuje on wbudowany backend. Jak omówiono w poprzednich postach:
Dzięki temu backendowi wyjście poleceń drukowania jest wyświetlane wewnątrz nakładek, takich jak notatnik Jupyter, bezpośrednio pod komórką kodu, która go wytworzyła. Powstałe wykresy zostaną następnie zapisane w dokumencie notesu.
Oznacza to po prostu, że każdy wykres, który tworzymy jako część naszego kodu, pojawi się w tym samym notatniku, a nie w osobnym oknie, co miałoby miejsce, gdybyśmy nie użyli tej magicznej instrukcji.
TL; DR
%matplotlib inline
- Wyświetla dane wyjściowe w liniiJądro IPython ma możliwość wyświetlania wykresów przez wykonanie kodu. Jądro IPython jest zaprojektowane do płynnej współpracy z biblioteką wydruku matplotlib, aby zapewnić tę funkcjonalność.
%matplotlib
to magiczne polecenie, które wykonuje niezbędne zakulisowe ustawienia, aby IPython działał poprawnie ramię w ramięmatplotlib
; nie wykonuje żadnych poleceń importowania w Pythonie, co oznacza, że do przestrzeni nazw nie są dodawane żadne nazwy.
%matplotlib
(dostępne tylko dla Jupyter Notebook i Jupyter QtConsole)
%matplotlib inline
(prawidłowe wartości 'GTK3Agg', 'GTK3Cairo', 'MacOSX', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo', 'agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template'
)
%matplotlib gtk
Przykład - GTK3Agg - renderowanie Agg na kanwie GTK 3.x (wymaga PyGObject i pycairo lub cairocffi).
Więcej informacji na temat interaktywnych backendów matplotlib: tutaj
Począwszy od
IPython 5.0
imatplotlib 2.0
można uniknąć stosowania określonej magią i wykorzystania ipython jestmatplotlib.pyplot.ion()
/matplotlib.pyplot.ioff()
które mają zalety poza ipython pracy, jak również.
Pod warunkiem, że korzystasz z Jupyter Notebook, polecenie% matplotlib inline sprawi, że wyniki wydruku zostaną wyświetlone w notatniku, a także mogą być przechowywane.
Nie jest to obowiązkowe. Działa dobrze dla mnie bez %matplotlib
funkcji magicznej. Korzystam z kompilatora Sypder, który jest dostarczany w Anaconda.