关于python:如何使IPython笔记本matplotlib内联

How to make IPython notebook matplotlib plot inline

我正在尝试在MacOSX上使用i python笔记本和python 2.7.2以及i python 1.1.0。

我不能让matplotlib图形以内联方式显示。

1
2
3
4
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

我还尝试过%pylab inline和ipython命令行参数--pylab=inline,但这没有区别。

1
2
3
4
x = np.linspace(0, 3*np.pi, 500)
plt.plot(x, np.sin(x**2))
plt.title('A simple chirp')
plt.show()

我得到的不是内嵌图形:

1
<matplotlib.figure.Figure at 0x110b9c450>

matplotlib.get_backend()显示我有'module://IPython.kernel.zmq.pylab.backend_inline'后端。

  • 您的代码段不应生成,而应生成(因为您的最后一行正在打印标题)。无论如何,您的代码(使用%matplotlib inline和plt.show())在Windows上工作正常
  • 谢谢你的建议,但它们对我不起作用。我仍然得到上面的输出,没有内联图形。你有什么故障排除的建议吗?
  • 没有线索。相同的python,相同的ipython(和相同的后端),但是在windows上,它可以工作……我想剧情在你不插队的时候是有用的,对吧?
  • 如果没有%matplotlib inline,内核将永远保持繁忙状态,并且不会得到任何输出。它必须被杀死。这是试图使用MacOSX后端,但我想由于某种原因无法打开它。当不使用ipython笔记本时,用于matplotlib的MacOSX后端工作正常。
  • 我有一个相同的症状,但事实证明我在OSX 10.8上安装了32位版本的Canopy。用64位版本重新安装修复了它。
  • 刚刚遇到这个问题,还有一件事要确保:所有这些命令必须在同一个输入上。不分开。(因此,对于换行符,使用shift+enter而不是enter)。当所有人一起跑的时候,我得到了阴谋。
  • 在启动配置中修复一次:stackoverflow.com/questions/21176731/&hellip;
  • 已删除对--pylab命令行参数的支持。所以你应该在笔记本中使用%pylab inline


我在笔记本的第一个单元中使用了%matplotlib inline,它工作了。我认为你应该尝试:

1
2
3
4
5
%matplotlib inline

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

通过在配置文件中设置以下配置选项,您还可以在默认情况下以内联模式启动所有ipython内核:

1
2
3
4
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.

  • 我会把这当作正确的答案。替代的--pylab inline可以工作,但会向您发出以下警告:不建议在pylab模式下启动所有内核,并且在将来的版本中将被禁用。请使用%matplotlib magic来启用matplotlib。Pylab意味着许多进口产品,这些产品会产生混淆的副作用,并损害笔记本的可复制性。
  • @enord9@mightwolf:我正在学习使用i python(和python编程,而不是matlab);import matplotlib' do versus 将matplotlib导入为[名称]?原谅简单的评论
  • @enord9@mightwolf:这与"从matplotlib导入mpl"相比有何区别?
  • @对于您的问题,我看到的最好的解释是:effbot.org/zone/import-confusion.htm
  • 谢谢@enord9。我刚测试了你的命令,因为已经有一段时间了。现在,在python 2.7.9和ipython 3.1.0上一切都可以正常工作。
  • 我需要将"%matplotlib inline"放在块中包含"import matplotlib"的单元格中。如果我把它放在单独的第一个单元格中,它似乎不适用于导入。谢谢。
  • 相关线程:mail.scipy.org/pipermail/ipython-dev/2015-july/016631.html
  • 对于记录,要撤消此操作并切换回弹出窗口,您需要重新启动笔记本(并对代码中的行进行注释)。
  • 实际上,您可能希望将其编辑为%matplotlib notebook


如果Matplotlib版本高于1.4,也可以使用

IPython 3.x及以上

1
2
3
%matplotlib notebook

import matplotlib.pyplot as plt

旧版本

1
2
3
%matplotlib nbagg

import matplotlib.pyplot as plt

两者都将激活nbagg后端,从而启用交互。

Example plot with the nbagg backend

  • 这似乎不适用于%config InlineBackend.figure_format='retina'。知道如何获得互动视网膜图像吗?
  • 嗯……我对视网膜图像的专业知识真的不多。我唯一偶然发现的是这个链接,但它可能被否决了。如果有更多的人对此感到疑惑,我会把你的问题链接到这里,并祝你在那里找到答案。最好的
  • 这个答案被低估了。%matplotlib notebook%matplotlib inline提供了更好的可视化效果。
  • 在Jupyter笔记本4.1.1/Ubuntu 16.04/Chrome上使用%matplotlib notebook不起作用(有点像,然后是空白的),%matplotlib inline确实显示图像,但它们是在标记文本之后出现的,而不是字面上的"inline"。
  • 奇怪的是,你在Jupyter笔记本4.3.0上也有同样的经历吗?我刚检查过,它与笔记本4.3.0/薄荷18/铬(python 3.5.2,ipython 5.1.0)配合得很好。
  • 笔记本电脑后端:JavaScript output is disabled in JupyterLab,必须launch Classic Notebook
  • 使用%matplotlib notebook的绘图可以切断轴或图例:github.com/matplotlib/matplotlib/issues/9163
  • 如果您先尝试%matplotlib inline,然后切换到%matplotlib notebook,可能会得到空结果。重新启动内核并再次运行。
  • 是的,这样更好!!


CtrL+enter

1
%matplotlib inline

魔术线:D

请参见:使用matplotlib进行绘图。

  • 此链接现在已断开。
  • @布莱德利德还没死。或者,您可以访问github上的ipython repo,进入"example"文件夹,找到"Plotting with matplotlib"笔记本。
  • 很奇怪。前几天我死了。


我不知道为什么Joaquin把他的答案作为评论发表,但这是正确的答案:

ipython notebook --pylab inline启动ipython

编辑:好的,现在根据下面的注释,这已被否决。使用%pylab inline魔法命令。

  • 不再:"ipython笔记本--pylab inline[e 15:01:18.182 notebookapp]已删除对在命令行上指定--pylab的支持。[E 15:01:18.182 Notebook应用程序]请在笔记本中使用%pylab inline%matplotlib inline。"


在jupyter(ipython 3)中默认使matplotlib内联:

  • 编辑文件~/.ipython/profile_default/ipython_config.py

  • 加行c.InteractiveShellApp.matplotlib = 'inline'

  • 请注意,将这一行添加到ipython_notebook_config.py将不起作用。否则,它与Jupyter和IPython 3.1.0配合得很好。


    我必须同意Foobarbecue的观点(我没有足够的记录来在他的帖子下面简单地插入评论):

    现在建议不要用--pylab这个参数来启动python notebook,根据ipythonnb的创建者fernando perez的说法,%matplotlib inline应该是最初的notebook命令。

    请参见:http://nbviewer.ipython.org/github/ipython/ipython/blob/1.x/examples/notebook/part%203%20-%20Plotting%20with%20matplotlib.ipynb


    我找到了一个非常令人满意的解决方法。我安装了Python,现在这对我来说是现成的。


    我安装了水蟒,但Matplotlib没有策划

    当我这样做的时候它就开始策划

    1
    2
    3
    4
    import matplotlib
    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline

    在Ubuntu上,您可以删除%matplotlib inline,只要您在创建图形后拥有plt.show()

    • plt.show()也适用于Windows,但必须在每个数字后添加。%matplotlib inline的优点是,当它被调用一次时,笔记本中的所有数字都将是内联的。


    您可以用语法错误来模拟这个问题,但是,%matplotlib inline不能解决这个问题。

    首先是创建绘图的正确方法的示例。一切都按预期工作,进口和魔术,巨大9供应。

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

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

    但是,通过将()保留在绘图类型的末尾,您会收到一个模糊的非错误。

    铁代码:

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

    示例错误:

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

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

    • 这不是语法错误——如果没有()来调用kde,ipython会告诉您kde是什么,即绑定方法。所以实际上,从IPython的角度来看,这根本不是一个"错误",所以为什么没有堆栈跟踪。
    • @Kylestrand谢谢。在重新阅读了我的文章之后,我应该说:"我认为我有一个问题,那就是不能用%matplotlib inline命令让我的情节显示出来。我真的忘了把()放在绘图类型的末尾。所以,如果其他事情都失败了,看看你的括号里有没有错误。"