【发布时间】:2014-12-04 09:17:36
【问题描述】:
在 iPython 中,我使用 Pandas 绘图功能在一个单元格中创建图像。在同一个笔记本的不同降价单元格中,我想内联添加这个数字。
是否可以在 Markdown 单元格中引用笔记本内部图形而不将它们保存到磁盘?
【问题讨论】:
标签: python ipython markdown ipython-notebook
在 iPython 中,我使用 Pandas 绘图功能在一个单元格中创建图像。在同一个笔记本的不同降价单元格中,我想内联添加这个数字。
是否可以在 Markdown 单元格中引用笔记本内部图形而不将它们保存到磁盘?
【问题讨论】:
标签: python ipython markdown ipython-notebook
编辑:它在同一个笔记本中!
是的,您可以,但不能在降价单元格中(据我所知)。
只需将您的图形保存在图形对象中(如果 fig = plt.figure() 尚未完成)
plt.plot(...)
fig = plt.gcf()
然后在笔记本的任意位置调用fig。 html转换后去掉输入单元格,见下文。
如果在 2 个不同的笔记本之间(但也可以在同一个笔记本中工作)
我最接近您的要求是使用图片的 base64 地址:
到目前为止,markdown 似乎并不能很好地解决这个问题,但是您可以将以下内容放入 %%html 魔术单元格中。
%%html
<img alt="Image" src="data:image/png;base64,iVBORw0KG ... hEJRU5ErkJggg==" />
与
data:image/png;base64,iVBORw0KG ... hEJRU5ErkJggg==
在 base64 中成为您的图像。您可以通过右键单击另一个笔记本中的图像并选择“复制图像地址”(如果它是内联图像)来获取此地址。否则,您可以使用图像到 base64 转换器。
在这里您仍然可以看到输入单元格,但如果您最终将笔记本转换为 html,您将能够使用一些 Javascript 隐藏输入单元格。 (See here for how to,免责声明:这是我的回答(对我的问题))。
最后,您将能够在保留图像的同时隐藏%%htmlmagic 单元格。
希望对你有帮助
【讨论】:
savefig(...) 和 。
如果在创建图形时保留Axes 实例,则可以轻松完成:
t = arange(0,6,0.01)
x = sin(t)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(t,x)
如果您使用 pandas 绘图函数,首先像以前一样创建轴,然后将实例作为参数传递给 pandas 绘图函数: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())
【讨论】:
display 允许重用现有的 axes。
matplotlib 魔法线可能会做你想做的事:
%matplotlib inline
它将进入一个输出单元格。
【讨论】: