2015-09-06 88 views

回答

5

一个颇具创意的方式是模仿内联后端,但添加一个基础表。为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') 

如果现在设置表的CSS例如删除边框

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

你喜欢
enter image description here

的曲线图。当然该溶液可进一步增强,可以使用固定的列宽度等 IIRC的base64编码用蟒3.x的略微不同的

相关问题