有没有办法将多个 Plotly HTML 文件离线合并/嵌入到一个页面/HTML 文件中?

Posted

技术标签:

【中文标题】有没有办法将多个 Plotly HTML 文件离线合并/嵌入到一个页面/HTML 文件中?【英文标题】:Is there a way to merge/embed multiple Plotly HTML files into one page/HTML file offline? 【发布时间】:2018-05-08 21:49:47 【问题描述】:

我正在尝试将多个图表组合成一份 html 报告以发送出去。问题是我真的不认为子图是最好的主意,因为图表相对不相关(不同的 X/Y 轴)。我需要做的只是将图表附加到 1 个 HTML 文件中。有一个指南解释了如何使用 plotly URLs,但我不想依赖互联网连接来自动报告,我希望能够在线查看这些报告

我正在尝试创建一个 HTML 报告,它只是将多个情节图附加到一个 HTML 文件中,而不是拥有多个单独的 HTML 文件。这些图表并不真正相关,因此对创建子图不感兴趣。理论上它只是一个 HTML 文件,所以我可以以某种方式复制和粘贴代码并让它们都显示出来,对吗?

我指的文档:https://plot.ly/python/html-reports/

【问题讨论】:

我不明白你为什么要避免子图 - 我认为这是获得组合 HTML 的最简单方法。 您想要交互式 D3s 图形,还是仅在 HTML 容器中嵌入一系列静态 PNG 图像就足够了?后者应该是微不足道的。 最好是交互式 D3 图。我不想做子图的原因是因为有几十个图表根本不共享X/Y轴,创建多条轨迹会非常耗时 【参考方案1】:

以您想要的格式创建网格布局,然后以编程方式将 html 插入到网格中

【讨论】:

【参考方案2】:

这里是基于https://***.com/a/58336718/4286380的建议

def plot_list(df_list):
    fig_list =[]
    from plotly.subplots import make_subplots

    # Creation des figures
    i=0
    for df in df_list:
        i+=1
        fig = go.Figure()
        fig.add_trace(go.Scatter(x=list(df.Date), y=list(df.Temp), name="Température"))

        # Add figure title
        fig.update_layout(
            title_text=f"Cas n°i")

        # Set x-axis title
        fig.update_xaxes(title_text="Date")

        fig_list.append(fig)

    # Création d'un seul fichier HTML
    filename=f"os.path.join('output', 'full_list.html')"
    dashboard = open(filename, 'w')
    dashboard.write("<html><head></head><body>" + "\n")
    include_plotlyjs = True

    for fig in fig_list:
        inner_html = fig.to_html(include_plotlyjs = include_plotlyjs).split('<body>')[1].split('</body>')[0]
        dashboard.write(inner_html)
        include_plotlyjs = False
    dashboard.write("</body></html>" + "\n")

【讨论】:

以上是关于有没有办法将多个 Plotly HTML 文件离线合并/嵌入到一个页面/HTML 文件中?的主要内容,如果未能解决你的问题,请参考以下文章

使用 plotly 离线生成图形作为图像

有没有办法使用 plotly 开始一个已经在特定区域放大的情节?

将配置模式添加到 Plotly.Py 离线 - 模式栏

有没有办法使用 Plotly express 显示多个子图

将 Plotly 交互式图表嵌入博客而不丢失动画

Plotly:将绘图图导出为 png 时如何仅导出活动图例?