python将plotly plot保存到本地文件并插入html

发布于 2021-01-29 18:20:38

我正在使用python并阴谋生产交互式html报告。这篇文章提供了一个不错的框架。

如果我在线生成绘图(通过绘图),然后将url插入html文件,则可以,但是刷新图表会花费很长时间。我想知道是否可以脱机生成图表并将其嵌入到html报告中,以便加载速度不是问题。

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

关注者
0
被浏览
161
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    选项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的未来版本而中断。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看