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.