我正在寻找解决此问题的方法。在小区社区(https://community.plot.ly/t/problem-with-densitymapbox-chart-type/28517)中,有一个与我的问题几乎类似的问题,但仍未找到解决方案。我的下拉菜单由scattermapbox和densitymapbox组成,我想在它们之间进行切换。但是,从scattermapbox更改为densitymapbox时,结果如下图所示:
densitymapbox after scattermapbox format 导入破折号 导入副本 导入路径库 导入破折号 将numpy导入为np 导入数学 导入日期时间为dt 将熊猫作为pd导入 从dash.dependencies导入Input,Output,State,ClientsideFunction 导入dash_core_components作为dcc 将dash_html_components导入为html 导入dash_table 随地导入plotly.graph_objs
# get relative data folder
PATH = pathlib.Path(__file__).parent
DATA_PATH = PATH.joinpath("data").resolve()
external_scripts = [
‘https://cdn.plot.ly/plotly-1.39.1.min.js’
]
external_stylesheets = [
‘https://codepen.io/etpinard/pen/wxwPXJ’
]
app = dash.Dash(
__name__,
external_scripts=external_scripts,
external_stylesheets=external_stylesheets
)
server = app.server
# Load data
df = pd.read_excel("Clean_TR(6.8.19).xlsx")
group_name = df['gname'].unique()
mapbox_access_token = <your token>
app.layout = html.Div(
[
dcc.Store(id = 'aggregate_data'),
dcc.Dropdown(
id = 'map_plot',
options = [{'label':i, "value":i} for i in ['Scatter', 'Density']],
value = ['Scatter']
),
dcc.Graph(id = 'mindanao-map')
]
)
@app.callback(
Output('mindanao-map', 'figure'),
[Input('map_plot', 'value')]
)
def update_map(map_plot):
if map_plot == "Density":
maptype = 'densitymapbox'
else:
maptype = 'scattermapbox'
return {
'data' : [{
'lat':df['latitude'],
'lon':df['longitude'],
'marker':{
'color': df['freq'],
'size': 8,
'opacity': 0.6
},
'customdata': df['idno'],
'type': maptype
}],
'layout': {
'mapbox': {
'accesstoken': mapbox_access_token,
'style':"light",
'center': dict(lon=123.30, lat= 7.50),
'zoom':'6',
},
'hovermode': 'closest',
'margin': {'l': 0, 'r': 0, 'b': 0, 't': 0}
}
}
if __name__ == "__main__":
app.run_server(debug=True)
但是只要我换出if-else顺序,即
if map_plot == "Scatter":
maptype = 'scattermapbox'
else:
maptype = 'densitymapbox'
结果显示为密度图,但不会散布。 我需要将这两者分开而不是if-else吗?任何输入都可以。谢谢您的时间!