【问题标题】:including plots in an IPython Notebook without %matplotlib magic function在没有 %matplotlib 魔术函数的 IPython Notebook 中包括绘图
【发布时间】:2015-04-05 14:53:33
【问题描述】:

设置:

我有一个 IPython Notebook,我想将其包含在我的文档的教程部分。我编写了一个 .ipynb —> .rst 转换脚本(使用 pandoc),其工作原理如下:笔记本首先转换为 .py 文件,该文件作为脚本执行,如果脚本执行没有引发异常,则.rst 导出被触发,并在文档的适当位置构建了指向该教程的链接。这样,只有在代码按照教程所说的那样做的情况下,教程才能集成到我的文档中。此方法是根据以下问题开发的:Raise exception if script fails

好的,这就是问题所在。我希望一些 .ipynb 教程包含带有 matplotlib 的内联图。我在 IPython Notebook 中显示绘图的方式是使用魔法函数调用:

%matplotlib inline 

但是,如果此命令出现在 python 可执行脚本中,python 会引发异常。所以我的教程目前都不能包含绘图。

问题:

所以我的问题是:如何在笔记本中包含内联图,以在笔记本导出到 .py 文件并作为脚本执行时不会引发异常?或者,除此之外,还有其他解决方法的建议吗?

【问题讨论】:

  • 在通过普通 python 运行程序之前,删除有问题的行可能更容易。
  • 为什么要将inline 调用包含在输出文档中?如果您的代码打算在普通的 python 脚本中运行,那么它失败是有道理的。
  • @ari - 我希望 .rst 文件显示一个可以在我的网络托管文档上阅读的漂亮图。该脚本的唯一目的是测试其余代码是否正常工作,以便我的文档保持最新。
  • .rst 可以包含笔记本中的 png 吗?这很整洁!在这种情况下,正如大卫所说,在转换之前从 .ipnb 或在运行之前从 .py 中剥离所有魔法应该可以解决问题。
  • 另外,查看您链接的问题,您没有接受答案。如果其中一个答案解决了您的问题,我建议您接受它——花所有时间回答问题而没有得到验证可能有点令人沮丧。

标签: python matplotlib plot ipython-notebook


【解决方案1】:

改用这个:

from IPython import get_ipython
ipython = get_ipython()
if ipython:
    ipython.magic("matplotlib inline")

【讨论】:

    【解决方案2】:

    目前,应该没有真正需要在 jupyter 中使用 %matplotlib inline 魔法。相反,这应该很好地显示:

    import matplotlib.pyplot as plt
    fig, ax = plt.subplot(111)
    ax.plot([3,4,2,5])
    fig
    

    【讨论】:

    • 即使 matplotlib.Figure 缺少 pandas 表和 matplotlib 动画使用的 ._repr_html_() 方法,这仍然有效,因为 ipython 格式化程序(它美化普通列表等)已内置支持转换 Figure 实例到 PNG 等。
    猜你喜欢
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多