Plotly Express `scatter_mapbox` 与 `animation_frame` 和 `color`
Poltly Express `scatter_mapbox` with `animation_frame` and `color`
如果数据的列为:'e_lat'、'e_lon'、'Année' 和 'Expéditeur'。
我正在尝试制作 scatter_mapbox,帧由“Année”制作动画,颜色基于 'Expéditeur'(明确的,人名)。
# I created a row df['_color'] = df['Expéditeur'] because in the end I want to change the way _color is defined.
fig = px.scatter_mapbox(df,
lat='e_lat',
lon='e_lon',
hover_name='Ville Expéditeur',
hover_data=['Expéditeur', 'Destinataire', 'Ville Expéditeur', 'Année'],
animation_frame='Année',
mapbox_style='carto-positron',
zoom=4,
color='_color',
)
fig.show()
问题是我得到了这样的东西:
(仅显示具有第一种颜色的点)
如果我注释掉 color='_color',
,我会得到:
如果我注释掉 animation_frame='Année'',
,我会得到:
我做了很多研究,但在我看来,人们总是做同样的事情并得到不同的结果([例如本教程](https://towardsdatascience.com/how-to-animate-scatterplots-on-mapbox-using-plotly-express-3bb49fe6a5d, this Whosebug issue,...)
我的 plotly 库是最新的。
我用`动画组、color_discrete_map、color_discrete_sequence等尝试了很多不同的东西,但都没有成功。
我在这里做错了什么?非常感谢。
[编辑]
事实上,它与 here 完全相同(未解决)。
这似乎是因为一个documented bug of Plotly。
“如果所有颜色都用于第一帧,问题就会消失。”
我通过添加“假数据”(在地图范围之外)解决了这个问题:在动画的第一帧中,每种颜色一个。
new_rows = []
for color in df['_color'].unique():
new_row = {'_color': color, 'Année': df['Année'].min(), 'lat': 0, 'lon': 0}
new_rows.append(new_row)
df = df.append(new_rows, ignore_index=True)
希望这会对某人有所帮助。
事实上,它与 here 完全相同(未解决)。
这似乎是因为一个documented bug of Plotly。
“如果所有颜色都用于第一帧,问题就会消失。”
我通过添加“假数据”(在地图范围之外)解决了这个问题:在动画的第一帧中,每种颜色一个。
new_rows = []
for color in df['_color'].unique():
new_row = {'_color': color, 'Année': df['Année'].min(), 'lat': 0, 'lon': 0}
new_rows.append(new_row)
df = df.append(new_rows, ignore_index=True)
希望这会对某人有所帮助。
如果数据的列为:'e_lat'、'e_lon'、'Année' 和 'Expéditeur'。 我正在尝试制作 scatter_mapbox,帧由“Année”制作动画,颜色基于 'Expéditeur'(明确的,人名)。
# I created a row df['_color'] = df['Expéditeur'] because in the end I want to change the way _color is defined.
fig = px.scatter_mapbox(df,
lat='e_lat',
lon='e_lon',
hover_name='Ville Expéditeur',
hover_data=['Expéditeur', 'Destinataire', 'Ville Expéditeur', 'Année'],
animation_frame='Année',
mapbox_style='carto-positron',
zoom=4,
color='_color',
)
fig.show()
问题是我得到了这样的东西:
(仅显示具有第一种颜色的点)
如果我注释掉 color='_color',
,我会得到:
animation_frame='Année'',
,我会得到:
我做了很多研究,但在我看来,人们总是做同样的事情并得到不同的结果([例如本教程](https://towardsdatascience.com/how-to-animate-scatterplots-on-mapbox-using-plotly-express-3bb49fe6a5d, this Whosebug issue,...)
我的 plotly 库是最新的。
我用`动画组、color_discrete_map、color_discrete_sequence等尝试了很多不同的东西,但都没有成功。
我在这里做错了什么?非常感谢。
[编辑] 事实上,它与 here 完全相同(未解决)。 这似乎是因为一个documented bug of Plotly。 “如果所有颜色都用于第一帧,问题就会消失。”
我通过添加“假数据”(在地图范围之外)解决了这个问题:在动画的第一帧中,每种颜色一个。
new_rows = []
for color in df['_color'].unique():
new_row = {'_color': color, 'Année': df['Année'].min(), 'lat': 0, 'lon': 0}
new_rows.append(new_row)
df = df.append(new_rows, ignore_index=True)
希望这会对某人有所帮助。
事实上,它与 here 完全相同(未解决)。 这似乎是因为一个documented bug of Plotly。 “如果所有颜色都用于第一帧,问题就会消失。”
我通过添加“假数据”(在地图范围之外)解决了这个问题:在动画的第一帧中,每种颜色一个。
new_rows = []
for color in df['_color'].unique():
new_row = {'_color': color, 'Année': df['Année'].min(), 'lat': 0, 'lon': 0}
new_rows.append(new_row)
df = df.append(new_rows, ignore_index=True)
希望这会对某人有所帮助。