Я делаю веб-приложение, используя Python и Dash, это веб-приложение включает в себя карту мира с данными на основе выбранного года. Я хочу иметь возможность изменить год, а также обновить карту, чтобы соответствовать этому году. Я предпочитаю делать это с помощью ползунка «Тире», хотя я бы также оценил любой другой способ.
Я пытался обновить другие графики, такие как линейные диаграммы, с помощью ввода текста, и это сработало, но когда я изменил его на карту хороплета, он перестал обновляться. Теперь он только создает карту, но обновления на ней не отображаются. Я поместил некоторый печатный текст в функцию обновления, и он подтвердил, что он на самом деле вызывается, когда я изменяю ввод, но график просто не обновляется.
Макет: с помощью dcc.input я хочу обновить html.Div 'my-div'
app.layout = html.Div( children=[
html.H1(
children='UN Sustainable Development goal: Poverty',
style={
'textAlign': 'center',
'color': colors
}
),
dcc.Input(id='my-id',value='30', type='text'),
html.Div(id='my-div')
,
daq.Slider(
id='my-daq-slider',
min=1,
max=sliderlength,
step=1,
),
html.Div(id='slider-output')
], style={
'textAlign': 'center'
})
Часть обновления
@app.callback(
Output('my-div', 'children'),
[Input('my-id', 'value')])
def update_output_div(input_value):
return dcc.Graph(
id='my-div',
figure={'data': [go.Choropleth(
locations = df_pov['Country Code'],
z = df_pov.iloc[:,int(input_value)],
text = df_pov['Country Name'],
autocolorscale = True,
reversescale = False,
marker = go.choropleth.Marker(
line = go.choropleth.marker.Line(
color = 'rgb(180,180,180)',
width = 0.5
)),
colorbar = go.choropleth.ColorBar(
tickprefix = '%',
title = '% below 1.90$ '),
)],
'layout': go.Layout(
title = go.layout.Title(
text = list(df_pov)[int(input_value)]
),
geo = go.layout.Geo(
showframe = False,
showcoastlines = False,
projection = go.layout.geo.Projection(
type = 'equirectangular'
)
),
annotations = [go.layout.Annotation(
x = 0.55,
y = 0.1,
xref = 'paper',
yref = 'paper',
text = 'Source: Kaggle',
showarrow = False
)]
)
}
)
То, что я ожидал: для обновления хороплета при изменении ввода текста или ввода с помощью ползунка.
Фактически: карта создается один раз (с той же функцией, которая должна ее обновлять), но не обновляется.