developer tip

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

copycodes 2020. 9. 29. 07:56
반응형

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


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

matplotlib 버전이 1.4 이상이면 다음을 사용할 수도 있습니다.

IPython 3.x 이상

%matplotlib notebook

import matplotlib.pyplot as plt

이전 버전

%matplotlib nbagg

import matplotlib.pyplot as plt

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

nbagg 백엔드를 사용한 예제 플롯


Ctrl + Enter

%matplotlib inline

Magic Line :D

See: Plotting with Matplotlib.


I'm not sure why joaquin posted his answer as a comment, but it is the correct answer:

start ipython with ipython notebook --pylab inline

Edit: Ok, this is now deprecated as per comment below. Use the %pylab inline magic command.


To make matplotlib inline by default in Jupyter (IPython 3):

  1. Edit file ~/.ipython/profile_default/ipython_config.py

  2. Add line c.InteractiveShellApp.matplotlib = 'inline'

Please note that adding this line to ipython_notebook_config.py would not work. Otherwise it works well with Jupyter and IPython 3.1.0


I have to agree with foobarbecue (I don't have enough recs to be able to simply insert a comment under his post):

It's now recommended that python notebook isn't started wit the argument --pylab, and according to Fernando Perez (creator of ipythonnb) %matplotlib inline should be the initial notebook command.

See here: http://nbviewer.ipython.org/github/ipython/ipython/blob/1.x/examples/notebooks/Part%203%20-%20Plotting%20with%20Matplotlib.ipynb


I found a workaround that is quite satisfactory. I installed Anaconda Python and this now works out of the box for me.


I did the anaconda install but matplotlib is not plotting

It starts plotting when i did this

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

You can simulate this problem with a syntax mistake, however, %matplotlib inline won't resolve the issue.

First an example of the right way to create a plot. Everything works as expected with the imports and magic that eNord9 supplied.

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

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

However, by leaving the () off the end of the plot type you receive a somewhat ambiguous non-error.

Erronious code:

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

Example error:

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

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


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 :)

참고 URL : https://stackoverflow.com/questions/19410042/how-to-make-ipython-notebook-matplotlib-plot-inline

반응형