在 python 中绘制多线图并嵌入 HTML

Posted

技术标签:

【中文标题】在 python 中绘制多线图并嵌入 HTML【英文标题】:Plotting multi-line charts in python and embedding in HTML 【发布时间】:2016-10-08 12:15:41 【问题描述】:

我正在用 python 做一些数据分析。我有一个时间序列数据(用于连续日期),我想绘制如下内容:

我使用 matplotlib 绘制了单折线图,并使用 base64 编码将其嵌入到 html 中。但令人担忧的是,当我在 HTML 中嵌入图表时,我没有悬停功能。 对于图像中显示的那种图形,我可以使用 matplotlib 轻松绘制它,但是我想将它嵌入到 html 中,并启用悬停以方便阅读。 我已经完成了情节并且确实完成了工作,但是那里的图表不是私人的,而且这里的隐私也是一个问题。

请为此建议一些开源库。

我所做的代码:

def graph(data):
    keys = sorted(data.keys())
    values = [data[key] for key in keys]

    fig = plt.figure(figsize = (2 , 0.3) ,facecolor='w')
    plt.axis("off")
    plt.subplots_adjust(bottom = 0.15)
    plt.plot(values , color = 'g' )

    imgdata = cStringIO.StringIO()
    fig.savefig(imgdata, format='png' , facecolor = fig.get_facecolor())

    s = '<img alt = "embedded" src = "data:image/png;base64,%s"/>' %
             imgdata.getvalue().encode("base64").strip()


    plt.close()

    return s

谢谢。

【问题讨论】:

要求推荐的问题是题外话。虽然谷歌搜索“matplotlib html”确实给了你一个相当不错的选择.. 您可以查看此示例bl.ocks.org/mbostock/3884955,您可能需要使用端点公开您的数据。 【参考方案1】:

您需要一些 Javscript 才能在 HTML 中生成动画图表。您可以考虑使用 Bokeh,它是 D3.js 库的 Python 包装器:

http://docs.bokeh.org

【讨论】:

仅供参考:Bokeh 不是现在,并且从未成为 d3 的包装器。

以上是关于在 python 中绘制多线图并嵌入 HTML的主要内容,如果未能解决你的问题,请参考以下文章

Python matplotlib绘制条形柱状图并添加数据标签

python使用matplotlib可视化subplots子图subplots绘制子图并为可视化的多个子图设置共享的X轴

python使用matplotlib可视化subplots子图subplots绘制子图并为可视化的多个子图设置共享的Y轴

python使用matplotlib可视化使用subplots子图subplots绘制子图并为可视化的子图添加主标题(subplots main title)

python使用matplotlib可视化使用subplots子图subplots绘制子图并为可视化的每个子图添加标题(title for each subplots)

Plotly:使用 Python 在多线图中添加色阶