我正在使用 Python 库 Dash 并且文档声称它不支持使用仪表板 html 代码编写原始 html 的能力。是否有一个已知的解决方法(比如将 dcc.Graph
传递到 render_template()
与 Flask?)。
我想迁移到 Jinja 模板文件的代码片段是:
app.layout = html.Div(className='ui container', children=[
html.H1('Locations', className=''),
html.Div(id='text-content'),
dcc.Graph(id='map', figure={
'data': [{
'lat': df['LAT'],
'lon': df['LONG'],
'marker': {
'color': df['YEAR'],
'size': 8,
'opacity': 0.6
},
'customdata': df['NO'],
'type': 'scattermapbox'
}],
},
'hovermode': 'closest',
'margin': {'l': 0, 'r': 0, 'b': 0, 't': 0}
}
})
])
最佳答案
我以前来过这里并自己问过这个问题,我继续在这里回答:Plotly.offline plot output_type='div' not working inside HTML - How to embed Plotly to HTML
简而言之,要获得通过 Flask View 呈现的绘图图表,您可以执行以下操作(取自上述链接)
pyo.plot()
正常通过无花果,output_type='div'
和 include_plotlyjs=False
Markup()
的变量(从 flask 进口)Markup(variable)
穿过render_template
就像你喜欢一个表格 {{ jinja template }}
在 html 中呈现变量多一点实际演示:
def my_bar_chart():
*snip irrelevant*
my_bar_chart = pyo.plot(fig, output_type='div', include_plotlyjs=False)
return Markup(my_bar_chart)
现在将您的函数导入到 app.py/ View 所在的任何位置,并像处理任何表单一样通过渲染模板传递它。下面是一个例子:
def my_page():
my_bar_chart_var = my_bar_chart()
return render_template('my_page.html',
bar_chart_1=my_bar_chart_var)
然后在该页面的 html 上简单地通过 bar_chart_1
在像这样的 jinja 模板中:{{ bar_chart_1 }}
关于python - 将 dash_html_components 传递给 Jinja 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50827099/