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:
%matplotlibto 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 inlinespowoduje to, że wyniki wydruku będą wyświetlane i przechowywane w notebooku.
Zgodnie z dokumentacją
Aby to skonfigurować, przed wykonaniem jakiegokolwiek wydruku lub importu
matplotlibnależ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
inlinebackend. Ta opcja jest dostępna tylko dla Notatnika Jupyter i Jupyter QtConsole. Można go wywołać w następujący sposób:%matplotlib inlineDzię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 inlinejest to standardowe rozwiązanie. Są też inne magiczne polecenia, które będą używane matplotlibinteraktywnie w Jupyter.
%matplotlib: dowolne pltpolecenie 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ść.
%matplotlibto 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.0imatplotlib 2.0moż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 %matplotlibfunkcji magicznej. Korzystam z kompilatora Sypder, który jest dostarczany w Anaconda.