【问题标题】:Insert figure into iPython markdown cell将图形插入 iPython 降价单元格
【发布时间】:2014-12-04 09:17:36
【问题描述】:

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

是否可以在 Markdown 单元格中引用笔记本内部图形而不将它们保存到磁盘?

【问题讨论】:

    标签: python ipython markdown ipython-notebook


    【解决方案1】:

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

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

    只需将您的图形保存在图形对象中(如果 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 单元格。

    希望对你有帮助

    【讨论】:

    • 您也可以在 md 单元格中 savefig(...)![myfig](file/path-to-myfig.png)
    • 是的,但是 OP 要求没有将图像保存到磁盘!
    【解决方案2】:

    如果在创建图形时保留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
    【解决方案3】:

    matplotlib 魔法线可能会做你想做的事:

    %matplotlib inline
    

    它将进入一个输出单元格。

    【讨论】:

      猜你喜欢
      • 2012-05-24
      • 1970-01-01
      • 2013-09-05
      • 2018-12-22
      • 2018-01-24
      • 1970-01-01
      • 2020-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多