如何使IPython笔记本matplotlib内联

Ian*_*ske 779 python data-visualization matplotlib ipython jupyter-notebook

我试图在MacOS X上使用Python 2.7.2和IPython 1.1.0上的IPython笔记本.

我无法让matplotlib图形显示为内联.

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline  
Run Code Online (Sandbox Code Playgroud)

我也试过%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()
Run Code Online (Sandbox Code Playgroud)

而不是内联图形,我得到这个:

<matplotlib.figure.Figure at 0x110b9c450>
Run Code Online (Sandbox Code Playgroud)

matplotlib.get_backend()表明我有'module://IPython.kernel.zmq.pylab.backend_inline'后端.

小智 1078

%matplotlib inline在笔记本的第一个单元格中使用它,它的工作原理.我想你应该试试:

%matplotlib inline

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)

通过在配置文件中设置以下配置选项,您也可以在默认情况下以内联模式启动所有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.
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是正确的答案.替代`--pylab inline`可以工作,但是会出现以下警告:_建议不要在pylab模式下启动所有内核,并且将来的版本将禁用它.请使用%matplotlib magic来启用matplotlib.pylab意味着许多导入,可能会产生令人困惑的副作用,并损害笔记本的可重复性._ (7认同)
  • @eNord9 @mightwolf:我正在学习使用 iPython(以及 Python 编程而不是 Matlab);“import matplotlib”与“import matplotlib as [name]”相比有何作用?原谅简单的评论 (2认同)
  • @eNord9 @mightwolf:这与“from matplotlib import mpl”相比如何。 (2认同)
  • @TSGM我见过的最好的解释是:http://effbot.org/zone/import-confusion.htm (2认同)
  • 谢谢@eNord9。我刚刚测试了您的命令,因为更新和所有内容已经有一段时间了。现在在 Python 2.7.9 和 IPython 3.1.0 上一切正常。 (2认同)

Løi*_*ten 205

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

IPython 3.x及以上

%matplotlib notebook

import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)

旧版本

%matplotlib nbagg

import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)

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

使用nbagg后端的示例图

  • 这个答案被低估了.`%matplotlib notebook`比`%matplotlib inline`提供更好的可视化. (30认同)
  • 在jupyter笔记本4.1.1/ubuntu 16.04/chrome上使用`%matplotlib notebook`不起作用(显示某种东西,然后是空白),`%matplotlib inline`确实显示图像,但它们是在降价文本之后,而不是字面意思"排队". (9认同)
  • 如果您先尝试`%matplotlib inline`然后切换到'%matplotlib notebook`,则可能会得到空结果.重新启动内核并再次运行. (4认同)

Cod*_*mer 88

Ctrl + Enter

%matplotlib inline
Run Code Online (Sandbox Code Playgroud)

魔术线:D

请参阅:使用Matplotlib绘图.


foo*_*cue 24

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

用ipython开始 ipython notebook --pylab inline

编辑:好的,现在根据以下评论推荐使用此功能.使用%pylab魔术.

  • 不再:"ipython notebook --pylab inline [E 15:01:18.182 NotebookApp]已删除了在命令行上指定--pylab的支持.[E 15:01:18.182 NotebookApp]请使用`%pylab inline`或笔记本本身里有`%matplotlib inline`." (14认同)

vol*_*myr 14

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


the*_*oop 10

我必须同意foobarbecue(我没有足够的记录,只能在他的帖子下插入评论):

现在建议python笔记本没有启动参数--pylab,并且根据费尔南多·佩雷斯(ipythonnb的创建者)%matplotlib inline应该是最初的笔记本命令.

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


Ian*_*ske 7

我找到了一个非常令人满意的解决方法.我安装了Anaconda Python,这对我来说现在开箱即用.


kru*_*ubo 6

当我在 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 :(
Run Code Online (Sandbox Code Playgroud)

通过将绘图命令合并到单个单元格中解决了该问题:

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 :)
Run Code Online (Sandbox Code Playgroud)


小智 5

我做了anaconda安装,但是matplotlib没有绘制

当我这样做时它开始绘图

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline  
Run Code Online (Sandbox Code Playgroud)