Cel „% matplotlib inline”

482

Czy ktoś mógłby mi wyjaśnić, do czego dokładnie służy %matplotlib inline?

Rishabh
źródło
22
Jest to magiczna funkcja, która renderuje figurę w notesie (zamiast wyświetlać zrzut obiektu figury). Prosty samouczek Matplotlib znajduje się tutaj data-blogger.com/2017/11/15/… .
www.data-blogger.com
6
Można sprawdzić dostępnych narzędzi (jak inline), wprowadzając: %matplotlib --list.
Luis

Odpowiedzi:

285

%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 .

Aurora0001
źródło
4
% matplotlib inline ^ Błąd składni: nieprawidłowa składnia
4
@Jadda Czy używasz IPython? Jeśli nie, pojawi się błąd składniowy, ponieważ nie jest to prawidłowy CPython („standardowy” interpreter dla Pythona). W każdym razie nie ma sensu z niego korzystać, chyba że używasz Notatnika IPython, ponieważ chodzi o to, aby wykresy były ustawione w jednej linii z notatnikiem.
Aurora0001
Tak. Używam tego w Spyder IDE (część Anaconda) do implementacji API detekcji obiektów
3
W takim przypadku @Jadda, wygląda na to, że masz nowe pytanie . Powinieneś tam podać wszystkie istotne szczegóły, abyś mógł zwrócić większą uwagę na swoje pytanie niż w komentarzach do tej odpowiedzi. Powodzenia.
Aurora0001,
2
ok, ale jaka jest alternatywa: jak mogę zobaczyć wykresy, jeśli taka magia nie jest aktywowana?
JaakL
77

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 parze matplotlib; 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 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.

matusko
źródło
32

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

Yossarian42
źródło
7

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.

ipython docs

Vicki B.
źródło
Myślę, że różni się to od zmiany zaplecza. O ile backend nie jest inline, wykresy są generowane w zewnętrznych oknach i musisz użyć display (), aby pokazać je w notatniku.
Vincenzooo
4

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.

Vihang Khare
źródło
4

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.

Arushi Jain
źródło
3

Aby wyjaśnić to jasno:

Jeśli ci się nie podoba:

wprowadź opis zdjęcia tutaj

Dodaj %matplotlib inline

wprowadź opis zdjęcia tutaj

i masz to w swoim notatniku jupyter.

prosti
źródło
2

TL; DR

%matplotlib inline - Wyświetla dane wyjściowe w linii


Ją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.

Wyświetl dane wyjściowe w osobnym oknie

%matplotlib

Wyświetl wynik wyjściowy

(dostępne tylko dla Jupyter Notebook i Jupyter QtConsole)

%matplotlib inline

Wyświetlacz z interaktywnymi backendami

(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.0i matplotlib 2.0można uniknąć stosowania określonej magią i wykorzystania ipython jest matplotlib.pyplot.ion()/ matplotlib.pyplot.ioff() które mają zalety poza ipython pracy, jak również.

Patrz: Bogata wydajność IPython - interaktywne drukowanie

Ani Menon
źródło
Prawdziwe pytanie noob tutaj, przepraszam .... co to jest „jądro IPython” i co to jest „magiczne polecenie”. Czy Python nagle do mnie doznał i przestał być pythoniczny? Nigdy nie słyszałem o tych koncepcjach.
lb_so
W przypadku notebooka Python (ipynb) - jądro ipython lub jądro jupyter to wersja python (i zależności), która ma być używana przez projekt. Możesz uruchomić notatnik jupyter, a następnie zmienić jądra, aby uruchomić komórki z inną konfiguracją Pythona i skonfigurować zmienne środowiskowe i wiele więcej.
Ani Menon
@Ib_so Magic to funkcja ipython / jupyter. Przeczytaj więcej tutaj.
Ani Menon
0

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.

Ashiq Imran
źródło
-8

Nie jest to obowiązkowe. Działa dobrze dla mnie bez %matplotlibfunkcji magicznej. Korzystam z kompilatora Sypder, który jest dostarczany w Anaconda.

użytkownik9196865
źródło
13
Spyder to IDE, a nie kompilator.
Matthieu Brucher
3
Twoja odpowiedź nie odpowiedziała na pytanie PO, ale odpowiedziała na moją. Dziękuję Ci.
EngrStudent