IPython 노트북 matplotlib 플롯을 인라인으로 만드는 방법


831

Python 2.7.2 및 IPython 1.1.0과 함께 MacOS X에서 IPython 노트북을 사용하려고합니다.

matplotlib 그래픽을 인라인으로 표시 할 수 없습니다.

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline  

나는 또한 %pylab inlineipython 명령 줄 인수를 시도했지만 --pylab=inline아무런 차이가 없습니다.

x = np.linspace(0, 3*np.pi, 500)
plt.plot(x, np.sin(x**2))
plt.title('A simple chirp')
plt.show()

인라인 그래픽 대신 다음을 얻습니다.

<matplotlib.figure.Figure at 0x110b9c450>

그리고 matplotlib.get_backend()내가 'module://IPython.kernel.zmq.pylab.backend_inline'백엔드를 가지고 있음을 보여줍니다 .


코드 스 니펫은 생산하지 않아야 <matplotlib.figure.Figure at 0x110b9c450>하지만 <matplotlib.text.Text at 0x94f9320>(마지막 줄이 제목을 인쇄하기 때문에) 어쨌든 코드 (% matplotlib 인라인 및 plt.show () 포함)는 Windows에서 예상대로 작동합니다.
— joaquin

그 제안에 감사하지만 그들은 나를 위해 작동하지 않습니다. 인라인 그래픽없이 위의 출력을 계속 얻습니다. 문제 해결 조언이 있습니까?
— Ian Fiske

실마리 없음. 동일한 파이썬, 동일한 ipython (및 동일한 백엔드)이지만 Windows에서는 작동합니다 .... 줄거리가 아닌 경우 플롯이 작동한다고 가정합니다.
— joaquin

2
이 없으면 %matplotlib inline커널은 영구적으로 바쁘고 출력이 없습니다. 죽여야합니다. 이것은 MacOSX백엔드 를 사용하려고 하지만 어떤 이유로 든 열 수없는 것 같습니다. ipython 노트북을 사용하지 않으면 matplotlib의 MacOSX 백엔드가 정상적으로 작동합니다.
— Ian Fiske

1
동일한 증상이 있었지만 OSX 10.8에 32 비트 버전의 Canopy를 설치 한 것으로 나타났습니다. 64 비트 버전으로 다시 설치하면 문제가 해결되었습니다.
— Vicky T

답변:


1130

%matplotlib inline노트북의 첫 번째 셀에서 사용 했으며 작동합니다. 나는 당신이 시도해야한다고 생각합니다 :

%matplotlib inline

import matplotlib
import numpy as np
import matplotlib.pyplot as plt

구성 파일에서 다음 구성 옵션을 설정하여 기본적으로 항상 모든 IPython 커널을 인라인 모드로 시작할 수 있습니다.

c.IPKernelApp.matplotlib=<CaselessStrEnum>
  Default: None
  Choices: ['auto', 'gtk', 'gtk3', 'inline', 'nbagg', 'notebook', 'osx', 'qt', 'qt4', 'qt5', 'tk', 'wx']
  Configure matplotlib for interactive use with the default matplotlib backend.

7
나는 이것을 정답으로 표시 할 것입니다. 대안 --pylab inline은 작동하지만 다음과 같은 경고 메시지가 나타납니다. pylab 모드에서 모든 커널을 시작하는 것은 권장되지 않으며 이후 릴리스에서 비활성화됩니다. 대신 matplotlib을 활성화하려면 % matplotlib 매직을 사용하십시오. pylab은 많은 수입품을 의미하며, 이는 부작용을 일으키고 노트북의 재현성을 손상시킬 수 있습니다.
— mpavlov

1
@ eNord9 @ mightwolf : iPython (및 Matlab 대신 Python 프로그래밍)을 사용하는 법을 배우고 있습니다. import matplotlib' do versus matplotlib을 [name] '으로 무엇을 가져 옵니까? 단순한 의견에 대한 용서
— TSGM

1
@ eNord9 @mightwolf : 그리고 이것은 'from matplotlib import mpl'과 어떻게 비교 되는가.
— TSGM

2
@TSGM 내가 당신의 질문에 대한 본 최고의 설명입니다 : effbot.org/zone/import-confusion.htm
— mpavlov

감사합니다 @ eNord9. 업데이트 및 모든 시간이 지났으므로 명령을 테스트했습니다. 이제 모든 것이 Python 2.7.9 및 IPython 3.1.0에서 제대로 작동합니다.
— Ian Fiske

216

matplotlib 버전이 1.4 이상인 경우 사용할 수도 있습니다

IPython 3.x 이상

%matplotlib notebook

import matplotlib.pyplot as plt

이전 버전

%matplotlib nbagg

import matplotlib.pyplot as plt

둘 다 nbagg 백엔드 를 활성화하여 상호 작용이 가능합니다.

nbagg 백엔드가있는 예제 플롯


이 작동하지 않는 것 같습니다 %config InlineBackend.figure_format='retina'. 대화식 Retina 인물을 얻는 방법에 대한 아이디어가 있습니까?
— orome

흠 ... 레티 나 인물에 대한 전문 지식이 너무 많지 않습니다. 내가 우연히 만난 것은 이 링크 였지만 더 이상 사용되지 않을 수 있습니다. 더 많은 사람들이 같은 것에 대해 궁금해하는 경우, 나는 당신의 SO 질문을 여기 에 연결하고 거기에 대한 답변으로 행운을 기원합니다. 최고
— Løiten

31
이 답변은 과소 평가되었습니다. %matplotlib notebook보다 더 나은 시각화를 제공합니다 %matplotlib inline.
— Hieu

9
%matplotlib notebookjupyter notebook 4.1.1 / ubuntu 16.04 / chrome에서 사용 이 작동하지 않습니다 (일종의 내용이 표시된 다음 비어 있음) %matplotlib inline.
— 마이클

6
먼저 시도한 %matplotlib inline다음로 전환 %matplotlib notebook하면 빈 결과가 나타날 수 있습니다. 커널을 다시 시작하고 다시 실행하십시오.
— Czechnology

91

Ctrl + Enter

%matplotlib inline

매직 라인 : D

Matplotlib로 플로팅하기를 참조하십시오 .


1
@BradleyKreider 아직 죽지 않았습니다. 또는 github의 ipython repo를 방문하여 'example'폴더로 이동하여 'Plotting with Matplotlib'노트북을 찾으십시오.
— CodeFarmer

24

%pylab inlinemagic 명령을 사용하십시오 .


14
더 이상 : "ipython notebook --pylab inline [E 15 : 01 : 18.182 NotebookApp] 명령 줄에서 --pylab 지정에 대한 지원이 제거되었습니다. [E 15 : 01 : 18.182 NotebookApp] %pylab inline또는 %matplotlib inline노트북 자체에서 사용하십시오 . "
— Dave X

14

Jupyter에서 기본적으로 matplotlib를 인라인으로 만들려면 (IPython 3) :

  1. 파일 편집 ~/.ipython/profile_default/ipython_config.py

  2. 라인 추가 c.InteractiveShellApp.matplotlib = 'inline'

이 줄을 추가하면 ipython_notebook_config.py작동하지 않습니다. 그렇지 않으면 Jupyter 및 IPython 3.1.0과 잘 작동합니다.


10

나는 foobarbecue에 동의해야합니다 (그의 게시물 아래에 단순히 의견을 삽입 할 수있는 충분한 recs가 없습니다).

--pylab페르난도 페레즈 (ipythonnb의 생성자)에 따르면 파이썬 노트북은 논쟁으로 시작되지 않는 것이 좋습니다.%matplotlib inline 초기 노트북 명령이어야합니다.

여기를 참조하십시오 : http://nbviewer.ipython.org/github/ipython/ipython/blob/1.x/examples/notebooks/Part%203%20-%20Plotting%20with%20Matplotlib.ipynb



5

아나콘다 설치를했지만 matplotlib가 플로팅되지 않습니다

내가 이것을했을 때 플로팅을 시작합니다.

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline  

2

구문 실수로이 문제를 시뮬레이션 할 수는 있지만 %matplotlib inline문제가 해결되지는 않습니다.

먼저 플롯을 만드는 올바른 방법의 예입니다. eNord9가 제공 한 수입품과 마법으로 모든 것이 예상대로 작동합니다 .

df_randNumbers1 = pd.DataFrame(np.random.randint(0,100,size=(100, 6)), columns=list('ABCDEF'))

df_randNumbers1.ix[:,["A","B"]].plot.kde()

그러나 ()플롯 유형의 끝을 벗어나면 다소 모호하지 않은 오류가 발생하지 않습니다.

잘못된 코드 :

df_randNumbers1.ix[:,["A","B"]].plot.kde

오류 예 :

<bound method FramePlotMethods.kde of <pandas.tools.plotting.FramePlotMethods object at 0x000001DDAF029588>>

이 한 줄 메시지 외에는 스택 추적이나 구문 오류가 있다고 생각할만한 명백한 이유가 없습니다. 플롯이 인쇄되지 않습니다.


(가)없이 -이 구문 오류가 아닙니다 ()을 호출 kde 무엇 iPython 당신을 말하고 kde 있다 , 즉, 바인딩 된 메서드. 실제로 iPython의 관점에서 볼 때 이것은 전혀 "오류"가 아니기 때문에 스택 추적이없는 이유입니다.
— Kyle Strand

1
@KyleStrand 감사합니다. 내 게시물을 다시 읽은 후 "나는 %matplotlib inline명령을 사용하여 줄거리를 표시하지 않는 문제가 있다고 생각했습니다 . 다른 모든 것은 실패합니다. 실수는 괄호를보십시오. "
— Blake M

1

Jupyter의 별도 셀에서 플로팅 명령을 실행할 때도 동일한 문제가 발생했습니다.

In [1]:  %matplotlib inline
         import matplotlib
         import matplotlib.pyplot as plt
         import numpy as np
In [2]:  x = np.array([1, 3, 4])
         y = np.array([1, 5, 3])
In [3]:  fig = plt.figure()
         <Figure size 432x288 with 0 Axes>                      #this might be the problem
In [4]:  ax = fig.add_subplot(1, 1, 1)
In [5]:  ax.scatter(x, y)
Out[5]:  <matplotlib.collections.PathCollection at 0x12341234>  # CAN'T SEE ANY PLOT :(
In [6]:  plt.show()                                             # STILL CAN'T SEE IT :(

플로팅 명령을 단일 셀로 병합하여 문제를 해결했습니다.

In [1]:  %matplotlib inline
         import matplotlib
         import matplotlib.pyplot as plt
         import numpy as np
In [2]:  x = np.array([1, 3, 4])
         y = np.array([1, 5, 3])
In [3]:  fig = plt.figure()
         ax = fig.add_subplot(1, 1, 1)
         ax.scatter(x, y)
Out[3]:  <matplotlib.collections.PathCollection at 0x12341234>
         # AND HERE APPEARS THE PLOT AS DESIRED :)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.