在IPython Notebook中包含图表而不使用%matplotlib魔法函数

3

设置:

我有一个IPython Notebook,想将其包含在我的文档的教程部分中。我编写了一个.ipynb -> .rst转换脚本(使用pandoc),它的工作方式如下:首先将笔记本转换为.py文件,该文件作为脚本执行,如果脚本执行没有引发任何异常,则触发.rst导出并在适当位置构建指向该教程的链接。这样,只有在代码确实执行教程所说的操作时,才能将教程集成到我的文档中。这个方法是基于以下问题开发的:如果脚本失败则引发异常

好的,现在问题来了。我希望一些.ipynb教程包含使用matplotlib的内联图。我在IPython Notebook中显示图表的方法是使用魔术函数调用:

%matplotlib inline 

然而,如果这个命令出现在Python可执行脚本中,Python会引发异常。因此,目前我的所有教程都无法包含绘图。

问题:

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


1
在将程序通过正常的Python运行之前,删除有问题的那一行可能会更容易。 - David Zwicker
1
你为什么希望inline调用被包含在输出文档中呢?如果你的代码是用于正常的Python脚本运行,那么它失败很有道理。 - ari
@ari - 我希望.rst文件能够显示一个漂亮的图表,可以在我的网络托管文档上阅读。脚本的唯一目的是测试其余代码是否正常工作,以便我的文档保持最新状态。 - aph
另外,看了你提供的问题链接,你并没有接受任何答案。如果其中一个答案解决了你的问题,我建议你接受它——花费那么多时间回答问题却得不到认可会让人感到沮丧。 - ari
感谢 @ari 的温柔提示,我选择被接受的答案的比例低纯粹是由于对 SO 协议的无知。 - aph
显示剩余3条评论
2个回答

3
请使用以下内容代替:
from IPython import get_ipython
ipython = get_ipython()
if ipython:
    ipython.magic("matplotlib inline")

1
目前,在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 等格式。 - benjimin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接