在 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)