如何使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 inline和ipython命令行參數--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'後端。


Answers


我在筆記本的第一個單元格中使用了%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後端 ,從而實現交互性。







我不確定為什麼華金張貼他的答案作為評論,但這是正確的答案:

ipython notebook --pylab inline啟動ipython ipython notebook --pylab inline

編輯:好吧,這是現在不贊成下面的評論。 使用%pylab魔術。




在Jupyter(IPython 3)中默認內聯matplotlib:

  1. 編輯文件~/.ipython/profile_default/ipython_config.py

  2. 添加行c.InteractiveShellApp.matplotlib = 'inline'

請注意,將此行添加到ipython_notebook_config.py將不起作用。 否則,它與Jupyter和IPython 3.1.0一起工作良好







我發現了一個相當令人滿意的解決方法。 我安裝了Anaconda Python ,現在這個工具對我來說是非常有用的。




我做了anaconda安裝,但matplotlib不繪圖

它開始陰謀當我這樣做

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



在Ubuntu上,只要在創建圖形後有plt.show() ,就可以刪除%matplotlib inline




你可以用一個語法錯誤模擬這個問題,然而, %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()

但是,通過將()關閉到plot類型的末尾,您會收到一些含糊不清的非錯誤。

猥褻代碼:

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

示例錯誤:

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

除了這一行消息,沒有堆棧跟踪或其他明顯的理由認為你犯了一個語法錯誤。 情節不打印。