在iPython中,我使用Pandas绘图功能在一个单元格中创建一个图像。在同一笔记本中的另一个降价单元格中,我想将此图添加到内联中。
是否可以在降价单元格中引用笔记本内部数字而不将其保存到磁盘?
答案 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
它将进入输出单元格。