如何在 jupyter/ipython 笔记本中的图形旁边显示文本段落

How to display a text paragraph next to figure in jupyter/ipython notebook

我正在寻找一种(也许是创造性的)方法来在 jupyter notebook 中的图表旁边放置文本。这个想法是在图表旁边有一个详细的描述,而不是笔记本通常的垂直流。

有什么想法吗?

一种相当有创意的方法是模仿内联后端,但添加一个底层 table。 python 2.7 的可能解决方案看起来像

from io import BytesIO
import matplotlib.pyplot as plt
from IPython.display import display, Image, HTML
import base64

def plotdesc(fig, text, iwidth=None):
    bio = BytesIO()
    # save fig as png to bytes IO instead to disk
    fig.savefig(bio, format='png')
    plt.close(fig)
    iwidth = ' width={0} '.format(iwidth) if iwidth is not None else ''
    img_tag = "<img src='data:image/png;base64," + base64.b64encode(bio.getvalue()) + "'{0}/>".format(iwidth)
    datatable = '<table><tr><td>{0}</td><td>{1}</td></tr></table>'.format(img_tag, text)
    display(HTML(datatable))

像这样使用:

fig, ax = plt.subplots(1,1, figsize=(6,4))
ax.plot([1,2,3])
text = '<h4>Description of the chart:</h4><BR>asdfsa fasdf qwer fsdaf er qw asdcdsafqwer dacfas dfqwetr cvxy fsa'
plotdesc(fig, text, iwidth='500px')

如果您现在设置 table CSS 以删除边框,例如

%%html
<style>
table,td,tr,th {border:none!important}
</style>

你得到一个像
这样的情节

当然可以进一步增强此解决方案以使用固定列宽等。 IIRC base64 编码与 python 3.x.

略有不同