我正在使用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}
}
})
])
答案 0 :(得分:0)
我以前来过这里并自己问过这个问题,我继续在这里回答:Plotly.offline plot output_type='div' not working inside HTML - How to embed Plotly to HTML
简而言之,要获得通过 Flask 视图呈现的绘图图表,您可以执行以下操作(取自上述链接)
pyo.plot()
和 output_type='div'
正常调用 include_plotlyjs=False
Markup()
(从烧瓶导入)的变量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 / 视图所在的任何位置,并像处理任何表单一样通过渲染模板传递它。
这是一个例子:
def my_page():
my_bar_chart_var = my_bar_chart()
return render_template('my_page.html',
bar_chart_1=my_bar_chart_var)
然后在该页面的 html 上简单地在 jinja 模板中传递 bar_chart_1
,如下所示:
{{ bar_chart_1 }}