Plotly.express:如何使点在数据框上一致地动画化(增长),而不会消失已经生成的点?

Plotly.express: How to make points animate consistently (grow-up) over the data frame, without vanishing the already spawned points?

提问人:Hoang D Nam 提问时间:11/13/2023 最后编辑:toyota SupraHoang D Nam 更新时间:11/14/2023 访问量:64

问:

我目前正在可视化“越南战争期间的轰炸区域”的数据。

数据如下:

DATE       |   TARGET_LATITUDE    |  TARGET_LONGTITUDE
1/10/1969  |    10.469393         |  106.019629
1/10/1969  |    11.525273         |  107.06769
1/10/1969  |    10.973675         |  106.019629
...
1/10/1970  |    11.469921         |  105.918000 
1/10/1970  |    12.589493         |  103.019346
...
1/10/1972  |    10.464893         |  103.013245
...

我的想法是用 Plotly 可视化这些数据。

更具体地说,我希望被轰炸的点随着时间的推移逐渐出现,而不会消失上一帧中出现的点。

我使用了参数,但是,结果与预期不符。这是我的代码:animation_framescatter_mapbox

import pandas as pd
import plotly.express as px
data = pd.read_csv("./data/THOR_Vietnam_Bombing_Operations.csv", 
                   encoding="latin-1", 
                   usecols=["DATE", "TARGET_LATITUDE", "TARGET_LONGTITUDE", "AIRCRAFT_ORIGINAL"])
data = data.sort_values(["MSNDATE"])
# Use first 2000 data: 1966 - 1970
data = data.iloc[:2000]
fig = px.scatter_mapbox(data, lat="TARGET_LATITUDE", 
                        lon="TARGET_LONGTITUDE", 
                        animation_frame="DATE",
                        animation_group="TARGET_LONGTITUDE", 
                        color_continuous_scale=px.colors.sequential.Hot, 
                        color_discrete_sequence=["red"])
fig.update_layout(mapbox_style="carto-positron")
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})
fig.update_layout(autosize=False, width=600, height=750)
fig.show()

它有效,但是,我希望“存在的轰炸点”仍然在地图上。

有什么可能的方法可以解决这个问题吗?感谢您的帮助!

以下是当前结果:

current_result

预期结果示例:

expected_result

Python 绘图 可视化

评论

0赞 D.L 11/13/2023
发布数据,而不是数据的图像。用户需要能够快速复制问题,而文本允许,而图片不允许。 如何询问
0赞 Matteo Zanoni 11/13/2023
您共享的代码缺少很多部分。请提供一个工作示例(您缺少导入和变量的生成)。否则,我们无法为您提供帮助。data
0赞 Hoang D Nam 11/13/2023
@D.L 是的,先生,我已经修改了问题!
0赞 D.L 11/14/2023
一个很好的解释:所以解决方案应该是相对直接的。如果要保留数据,请将所有点存储到一个总列表中并绘制此列表...
0赞 r-beginners 11/14/2023
这无法通过 express 实现,因此必须使用 graph 对象创建它。需要提取每个动画帧以包含所有以前的数据。可以在此处找到一个示例图形对象。

答: 暂无答案