如何使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后端 ,从而实现交互性。







我不确定joaquin为什么张贴他的答案作为评论,但这是正确的答案:

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

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