python - 将绘图保存到本地文件并插入到 html

标签 python plotly

我正在使用 python 和 plotly 来生成交互式 html 报告。 This post提供了一个很好的框架。

如果我在线生成绘图(通过 plotly),并将 url 插入 html 文件,它可以工作,但刷新图表需要很长时间。我想知道我是否可以离线生成图表并将其嵌入到 html 报告中,这样加载速度就不是问题了。

我发现离线绘图会为图表生成一个 html,但我不知道如何将它嵌入到另一个 html 中。有人可以帮忙吗?

最佳答案

目前有一个更好的选择,即离线绘制到 div 中,而不是完整的 html。 此解决方案不涉及任何黑客攻击。

如果你打电话:

plotly.offline.plot(data, filename='file.html')

它会创建一个名为 file.html 的文件并在您的网络浏览器中打开它。但是,如果你这样做:

plotly.offline.plot(data, include_plotlyjs=False, output_type='div')

该调用将返回一个字符串,其中仅包含创建数据所需的 div,例如:

<div id="82072c0d-ba8d-4e86-b000-0892be065ca8" style="height: 100%; width: 100%;" class="plotly-graph-div"></div>
<script type="text/javascript">window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL="https://plot.ly";Plotly.newPlot("82072c0d-ba8d-4e86-b000-0892be065ca8", 
[{"y": ..bunch of data..., "x": ..lots of data.., {"showlegend": true, "title": "the title", "xaxis": {"zeroline": true, "showline": true}, 
"yaxis": {"zeroline": true, "showline": true, "range": [0, 22.63852380952382]}}, {"linkText": "Export to plot.ly", "showLink": true})</script>

请注意,它只是您应该嵌入更大页面的 html 的一小部分。为此,我使用了标准模板引擎,例如 Jinga2。

使用它,您可以创建一个 html 页面,其中包含按您想要的方式排列的多个图表,甚至可以将其作为 对 ajax 调用的服务器响应返回,非常棒。

更新:

请记住,您需要包含 plotly js 文件才能使所有这些图表正常工作。

你可以包括

<script src="https://cdn.plot.ly/plotly-latest.min.js"></script> 

就在放置你得到的 div 之前。如果你把这个js放在页面底部,图表将不起作用

关于python - 将绘图保存到本地文件并插入到 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36262748/

相关文章:

python - 是否可以从 sql alchemy session 中检索引擎值

Python Plotly CDF 与频率分布数据

r - 如何自定义 ggplotly 对象中的悬停信息?

javascript - 如何在 Plotly 中添加轨迹,并为 x 轴上的每个数据点设置自定义顺序?

python - 获取给定目录中的子目录列表

Python 错误 : PyThreadState_Get: no current thread after compiling an extension

python - 根据 pandas 中的索引绘制一行中的所有值

python - 在 Pandas 中设置联盟

python - Plotly:当点超过 20 时,散点图标记消失

python - 如何将用 Dash 编写的网站显示为静态 PDF (Python)?