python将plotly plot保存到本地文件并插入html
我正在使用python并阴谋生产交互式html报告。这篇文章提供了一个不错的框架。
如果我在线生成绘图(通过绘图),然后将url插入html文件,则可以,但是刷新图表会花费很长时间。我想知道是否可以脱机生成图表并将其嵌入到html报告中,以便加载速度不是问题。
我发现离线绘图会为图表生成一个html,但是我不知道如何将其嵌入到另一个html中。有人可以帮忙吗?
-
选项1 :在Jupyter Notebook中使用plotly的脱机功能(我想您是从提供的链接中使用Jupyter
Notebook)。您可以简单地将整个笔记本另存为HTML文件。在执行此操作时,唯一的外部引用是JQuery。plotly.js将内联在HTML源代码中。- 选项2
- :最好的方法可能是直接针对plotly的JavaScript库进行编码。可以在这里找到有关此文档:https
- //plot.ly/javascript/
更新 :调用内部函数从来都不是一个好主意。我建议使用@Fermin
Silva给出的方法。在较新的版本中,现在还具有专用功能:(plotly.io.to_html
请参阅https://plotly.com/python-
api-reference/generation/plotly.io.to_html.html)Hacky选项3
(原始版本仅供参考):如果您确实想继续使用Python,则可以使用一些技巧来提取它生成的HTML。您需要一些最新版本的plotly(已使用进行了测试plotly.__version__ == '1.9.6'
)。现在,您可以使用内部函数来获取生成的HTML:from plotly.offline.offline import _plot_html data_or_figure = [{"x": [1, 2, 3], "y": [3, 1, 6]}] plot_html, plotdivid, width, height = _plot_html( data_or_figure, False, "", True, '100%', 525) print(plot_html)
您只需将输出粘贴到HTML文档主体中的某个位置即可。只要确保您在头部包含对plot的引用即可:
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
另外,您也可以引用用于生成HTML或内联JavaScript源的精确绘图版本(它删除了任何外部依赖关系;但是请注意法律方面)。
您最终得到一些这样的HTML代码:
<html> <head> <script src="https://cdn.plot.ly/plotly-latest.min.js"></script> </head> <body> <!-- Output from the Python script above: --> <div id="7979e646-13e6-4f44-8d32-d8effc3816df" style="height: 525; width: 100%;" class="plotly-graph-div"></div><script type="text/javascript">window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL="https://plot.ly";Plotly.newPlot("7979e646-13e6-4f44-8d32-d8effc3816df", [{"x": [1, 2, 3], "y": [3, 1, 6]}], {}, {"showLink": false, "linkText": ""})</script> </body> </html>
注意 :函数名称开头的下划线表示
_plot_html
不应从外部代码中调用它。因此,此代码很可能会随着plotly的未来版本而中断。