如何使IPython笔记本matplotlib绘图内联


Answers

如果你的matplotlib版本高于1.4,也可以使用

IPython 3.x及以上版本

%matplotlib notebook

import matplotlib.pyplot as plt

旧版本

%matplotlib nbagg

import matplotlib.pyplot as plt

两者都会激活nbagg后端 ,从而实现交互性。

Question

我试图在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'后端。




你可以用一个语法错误来模拟这个问题,然而, %matplotlib inline不会解决这个问题。

首先是创建情节的正确方法的一个例子。 所有功能都可以像提供的导入和魔法一样按预期工作。

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

除了这一行消息之外,没有堆栈跟踪或其他明显的理由认为您犯了语法错误。 情节不打印。




我不确定为什么华金会将他的答案作为评论发布,但这是正确的答案:

ipython notebook --pylab inline启动ipython

编辑:好的,现在根据下面的评论已经弃用了。 使用%pylab魔术。







在Ubuntu上,只要您在创建图表后创建了plt.show() ,就可以删除%matplotlib inline