“% matplotlib 인라인”의 목적


482

누군가가 정확히 무엇을 사용하는지 설명해 줄 수 %matplotlib inline있습니까?


22
그림 개체의 덤프를 표시하는 대신 그림을 노트북에 렌더링하는 마술 함수입니다. 간단한 Matplotlib 튜토리얼은 data-blogger.com/2017/11/15/…에 있습니다.
www.data-blogger.com


답변:


285

%matplotlibIPython 의 마술 함수 입니다. 편의를 위해 읽을 수 있도록 관련 문서를 여기에 인용하겠습니다.

IPython에는 명령 줄 스타일 구문을 사용하여 호출 할 수있는 사전 정의 된 '매직 함수'가 있습니다. 라인 지향과 셀 지향의 두 종류의 마법이 있습니다. 줄 마술은 % 문자로 시작하고 OS 명령 줄 호출과 매우 유사하게 작동합니다. 줄의 나머지 부분은 인수로 괄호 나 따옴표없이 전달됩니다. 라인 매직은 결과를 반환하고 과제의 오른쪽에서 사용할 수 있습니다. 셀 매직은 이중 %%로 시작하며, 나머지 줄뿐만 아니라 별도의 인수로 그 아래 줄을 인수로받는 함수입니다.

%matplotlib inline matplotlib의 백엔드를 '인라인'백엔드로 설정합니다 .

이 백엔드를 사용하면 플로팅 명령의 출력이 Jupyter 노트북과 같은 프런트 엔드 내에이를 생성 한 코드 셀 바로 아래에 인라인으로 표시됩니다. 결과 플롯은 노트북 문서에도 저장됩니다.

'인라인'백엔드를 사용하면 matplotlib 그래프가 코드 옆의 노트북에 포함됩니다. IPython 노트북 matplotlib 플롯을 인라인으로 만드는 방법을 읽고 코드에서 사용하는 방법에 대한 참조를 읽어보십시오.

상호 작용을 원한다면 여기에 설명 된 것처럼 nbagg 백엔드%matplotlib notebook(IPython 3.x에서) 사용할 수 있습니다 .


4
% matplotlib 인라인 ^ SyntaxError : 잘못된 구문

4
@Jadda IPython을 사용하고 있습니까? 그렇지 않으면 유효한 CPython (Python의 '표준'인터프리터)이 아니기 때문에 구문 오류가 발생합니다. IPython Notebook을 사용하지 않는 한 노트북을 사용하여 플롯을 인라인으로 렌더링하기 때문에 어쨌든 그것을 사용하는 것은 거의 없습니다.
Aurora0001

예. Spyder IDE (Anaconda의 일부)에서 이것을 사용하여

3
이 경우 @Jadda, 새로운 질문 이있는 것 같습니다 . 이 답변의 의견보다 질문에 더 많은 관심을 가질 수 있도록 모든 관련 세부 정보를 포함해야합니다. 행운을 빕니다.
Aurora0001

2
좋아, 그러나 대안은 무엇입니까 : 그러한 마술이 활성화되지 않은 경우 줄거리를 어떻게 볼 수 있습니까?
JaakL

77

IPython을 실행하는 %matplotlib inline경우 플롯 출력이 나타나 노트북에 저장됩니다.

설명서 에 따르면

이를 설정하려면 플로팅 또는 가져 오기를 matplotlib수행 하기 전에을 실행해야합니다 %matplotlib magic command. 이것은 IPython이 다음과 정확하게 일치하도록 필요한 비하인드 설정을 수행합니다 matplotlib. 그러나 실제로 파이썬 가져 오기 명령을 실행하지는 않습니다. 즉, 네임 스페이스에 이름이 추가되지 않습니다.

IPython이 제공하는 특히 흥미로운 백엔드는 inline백엔드입니다. Jupyter Notebook 및 Jupyter QtConsole에만 사용할 수 있습니다. 다음과 같이 호출 할 수 있습니다.

%matplotlib inline

이 백엔드를 사용하면 플로팅 명령의 출력이 Jupyter 노트북과 같은 프런트 엔드 내에이를 생성 한 코드 셀 바로 아래에 인라인으로 표시됩니다. 결과 플롯은 노트북 문서에도 저장됩니다.


32

Jupyter 노트북에 플롯을 추가하려는 경우 %matplotlib inline표준 솔루션입니다. matplotlibJupyter 내에서 대화식으로 사용할 다른 마술 명령이 있습니다 .

%matplotlib: 모든 plt플롯 명령으로 인해 그림 창이 열리고 플롯을 업데이트하기 위해 추가 명령을 실행할 수 있습니다. 일부 변경 사항은 자동으로 그려지지 않습니다.plt.draw()

%matplotlib notebook: 노트북에 내장 된 대화 형 플롯으로 이어지며 그림을 확대하고 크기를 조정할 수 있습니다

%matplotlib inline: 노트북에 정적 이미지 만 그리기


7

IPython 5.0 및 matplotlib 2.0으로 시작하면 IPython의 특정 마법 사용을 피할 수 있으며 IPython matplotlib.pyplot.ion()/matplotlib.pyplot.ioff()외부에서도 작업 할 수있는 장점이 있습니다.

ipython 문서


나는 이것이 백엔드를 변경하는 것과 다르다고 생각합니다. 백엔드가 아닌 inline경우 플롯은 외부 창에서 생성되며 노트북에 표시하려면 display ()를 사용해야합니다.
빈첸초 우

4

백엔드가 무엇인지 모르는 경우 https://matplotlib.org/tutorials/introductory/usage.html#backends를 읽을 수 있습니다.

일부 사람들은 파이썬 쉘에서 대화식으로 matplotlib를 사용하고 명령을 입력 할 때 플로팅 창이 나타납니다. 일부 사람들은 Jupyter 노트북을 실행하고 빠른 데이터 분석을 위해 인라인 플롯을 그립니다. 다른 사람들은 matplotlib를 wxpython 또는 pygtk와 같은 그래픽 사용자 인터페이스에 포함시켜 풍부한 응용 프로그램을 구축합니다. 일부 사람들은 배치 스크립트에서 matplotlib를 사용하여 수치 시뮬레이션에서 포스트 스크립트 이미지를 생성하고, 다른 사람들은 웹 응용 프로그램 서버를 실행하여 동적으로 그래프를 제공합니다. 이러한 모든 사용 사례를 지원하기 위해 matplotlib는 서로 다른 출력을 대상으로 할 수 있으며 이러한 각 기능을 백엔드라고합니다. "프론트 엔드"는 사용자가 직면 한 코드, 즉 플로팅 코드이며 "백엔드"는 그림을 만들기 위해 모든 비하인드 작업을 수행합니다.

따라서 % matplotlib inline을 입력하면 인라인 백엔드가 활성화됩니다. 이전 게시물에서 설명한 바와 같이 :

이 백엔드를 사용하면 플로팅 명령의 출력이 Jupyter 노트북과 같은 프런트 엔드 내에이를 생성 한 코드 셀 바로 아래에 인라인으로 표시됩니다. 결과 플롯은 노트북 문서에도 저장됩니다.


4

그것은 단지 우리가 우리의 코드의 일부로서 생성되는 모든 그래프가 같은 노트북이 아니라 우리가이 마법의 문을 사용하지 않은 경우 발생할 별도의 창에 표시됩니다 것을 의미합니다.


3

명확하게 설명하려면 :

이처럼 마음에 들지 않으면 :

여기에 이미지 설명을 입력하십시오

더하다 %matplotlib inline

여기에 이미지 설명을 입력하십시오

Jupyter 노트북에 있습니다.


2

TL; DR

%matplotlib inline -출력을 인라인으로 표시


IPython 커널은 코드를 실행하여 플롯을 표시 할 수 있습니다. IPython 커널은 matplotlib 플로팅 라이브러리와 원활하게 작동하여이 기능을 제공하도록 설계되었습니다.

%matplotlibIPython이 올바르게 작업하기 위해 필요한 비하인드 셋업을 수행하는 마술 명령입니다 matplotlib. 파이썬 가져 오기 명령을 실행하지 않습니다. 즉 네임 스페이스에 이름이 추가되지 않습니다.

별도의 창에 출력 표시

%matplotlib

인라인 출력 표시

(사용 가능한 경우에만 Jupyter 노트북과 Jupyter QtConsole에 대한)

%matplotlib inline

대화 형 백엔드로 표시

(유효한 값 'GTK3Agg', 'GTK3Cairo', 'MacOSX', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo', 'agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template')

%matplotlib gtk

예-GTK3Agg-GTK 3.x 캔버스로 렌더링되는 Agg (PyGObject 및 pycairo 또는 cairocffi 필요)

matplotlib 대화식 백엔드에 대한 자세한 내용 : 여기


시작 IPython 5.0하고 matplotlib 2.0당신은 IPython의 특정 마법 사용의 사용을 피할 수 matplotlib.pyplot.ion()/ matplotlib.pyplot.ioff() 뿐만 아니라 IPython 외부 작업의 장점을 가지고있다.

참조 : IPython Rich Output-대화식 플로팅


정말 멍청한 질문인데, 죄송합니다. "IPython 커널"이란 무엇이며 "마법 명령"은 무엇입니까? 파이썬이 갑자기 나에게 분리되어 파이썬이 아닌가? 나는 이런 개념에 대해 들어 본 적이 없다.
lb_so

python notebook (ipynb)의 경우 ipython kernal 또는 jupyter kernal은 프로젝트에서 사용할 python (및 종속성)의 버전입니다. Jupyter 노트북을 시작한 다음 커널 구성을 변경하여 다른 Python 구성으로 셀을 실행하고 환경 변수 등을 구성 할 수 있습니다.
Ani Menon

@Ib_so Magic 명령은 ipython / jupyter 기능입니다. 자세한 내용은 여기를 참조하십시오.
Ani Menon

0

Jupyter Notebook을 실행중인 경우 % matplotlib 인라인 명령은 플롯 출력을 노트북에 표시하고 저장할 수도 있습니다.


-8

반드시 작성해야하는 것은 아닙니다. %matplotlib마법 기능이 없어도 잘 작동했습니다 . Anaconda와 함께 제공되는 Sypder 컴파일러를 사용하고 있습니다.


13
Spyder는 IDE가 아니라 컴파일러입니다.
Matthieu Brucher

3
귀하의 답변이 OP의 질문에 답변하지는 않았지만 답변했습니다. 감사합니다.
EngrStudent
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.