将图插入iPython降价单元格

时间:2014-10-09 12:29:49

标签: python ipython markdown ipython-notebook

在iPython中,我使用Pandas绘图功能在一个单元格中创建一个图像。在同一笔记本中的另一个降价单元格中,我想将此图添加到内联中。

是否可以在降价单元格中引用笔记本内部数字而不将其保存到磁盘?

3 个答案:

答案 0 :(得分:1)

编辑:它在同一个笔记本中!

是的,你可以,但不是在降价单元格(据我所知)。

只需将图形保存在图形对象中(如果尚未由fig = plt.figure()完成)

plt.plot(...)
fig = plt.gcf()

然后在笔记本中的任何地方拨打fig。要在html转换后删除输入单元格,请参阅下文。


如果介于两个不同的笔记本之间(但也可以在同一个笔记本中使用)

我能得到的最接近的请求是使用图片的base64地址:

到目前为止,降价似乎并没有很好地解决这个问题,但你可以将以下内容放在%%html魔法单元格中。

%%html
<img alt="Image" src="data:image/png;base64,iVBORw0KG ... hEJRU5ErkJggg==" />

data:image/png;base64,iVBORw0KG ... hEJRU5ErkJggg==

在base64中成为你的形象。只需右键单击另一个笔记本中的图像,然后选择“复制图像地址”(如果它是内嵌图像),即可获得此地址。否则你可以使用image到base64转换器。

在这里你仍然可以看到输入单元格,但如果你最终用html转换你的笔记本,你将能够用一些Javascript隐藏输入单元格。 (See here for how to,免责声明:这是我的回答(我的问题))。

最后,您可以在保留图像的同时隐藏%%html魔法单元格。

希望这有帮助

答案 1 :(得分:1)

如果在创建数字时保留Axes实例,则可以轻松完成:

t = arange(0,6,0.01)
x = sin(t)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(t,x)

如果你正在使用pandas绘图函数,首先像以前一样创建轴,然后将实例作为参数传递给pandas plotting函数:pandas.DataFrame.plot(ax=ax)。一个例子:

from pandas import Series, date_range
ts = Series(randn(1000), index=date_range('1/1/2000', periods=1000))
ts = ts.cumsum()

fig = plt.figure()
ax = fig.add_subplot(111)
ts.plot(ax=ax)

然后你可以在另一个单元格中重复使用相同的数字:

display(ax.get_figure())

答案 2 :(得分:0)

matplotlib魔术线可能会做你想要的:

%matplotlib inline

它将进入输出单元格。