如何在 HTML 网页中显示多个 Plotly 图形? (使用 plot_div)

问题描述 投票:0回答:2

我想在 HTML 网页中显示多个绘图。我尝试了很多代码,但我找到的最简单的代码是这样的:

在我的观点函数中,我有:

for graphs in res:
            plot_div = plot(res[graphs], output_type='div')

        return render(request, '__', context={'plot_div': plot_div, "result": res})

在我的 HTML 中,我有:

<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>test</title>
</head>
<body>
  {% autoescape off %}
  {{ plot_div }}
  {% endautoescape %}
</body>
</html>

但是,只显示最后一张图。那是因为变量plot_div是在for循环下不断更新的。因此,我尝试创建一个这样的字典:

plot_div = dict()
        for index, graphs in enumerate(res, 1):
            plot_div.update({index: plot(res[graphs], output_type='div')})

        return render(request, 'account/user/IndFin/indfin_resultado.html', context={'plot_div': plot_div, "result": res})

因此,我需要将 HTML 更改为:

{% for graphs in plot_div %}
    {{plot_div.graphs}}
{% endfor %}

但是,结果我在我的网页中又得到了矩阵结果和最后一张图。根本没有图表,只有最后一张。有没有人遇到过这样的问题?

谢谢

html django web plotly plotly-python
2个回答
1
投票

我认为你需要一个字典列表而不是一个字典,比如

plot_div = [{index: plot(res[graphs], output_type='div')} for index, graphs in enumerate(res, 1)]
return render(request, 'account/user/IndFin/indfin_resultado.html', context={'plot_div': plot_div, "result": res})

在你的模板中

{% for plot in plot_div %}
    {{plot .output_type}}
{% endfor %}

0
投票

我多次创建图形并分别传递它们对我有用。

def index(request):
        figure1= fig.to_html()
        figure2= fig.to_html()
    
    return render(request, 'more.html', {'figure1':figure1,'figure2':figure2})
© www.soinside.com 2019 - 2024. All rights reserved.