绘制动画散点图,其中只有一个点在 Python 中显示文本

问题描述 投票:0回答:1

我有一个包含足球运动员统计数据的数据框,包括 x 轴的值 X、y 轴的 Y 值,然后是球员姓名和“统计数据年份”。我在动画帧中使用了一年的统计数据,但我想在动画过程中专门跟踪一个玩家,以查看他们的统计数据在图中移动。

d = {'player_names': ['player_A','player_A', 'player_B', 'player_B','player_C','player_C'],
'player_stat_x': ['10', '15', '5', '8', '7', '9'],
'player_stat_y':['1', '3', '2', '1', '4', '4'], 
'player_year': ['2003', '2004','2003', '2004','2003', '2004']}
df = pd.DataFrame(data=d)


fig = px.scatter(df.sort_values(['player_year']), 
                 x="player_stat_x", 
                 y="player_stat_y",
                 animation_frame = "player_year",
                 text = ??
)

我试图从 2003 年到 2004 年跟踪玩家 A,但我不知道如何处理这个问题。将“player_names”列放入文本字段会显示所有名称,这不是我想要的。我只想显示player_A 的名字。我是情节新手,不知道如何获得这种结果,或者是否可能。

python plotly
1个回答
0
投票

您可以做的是使用条件逻辑创建一个“文本”列,该列保留player_A字符串,但将所有其他字符串更改为

''
。这只会给玩家留下一条短信。

此外,您可能希望 x 和 y 的数据框是数字,而不是字符串

import pandas as pd
import plotly.express as px

import plotly.io as pio
pio.renderers.default = 'browser'



d = {'player_names': ['player_A','player_A', 'player_B', 'player_B','player_C','player_C'],
'player_stat_x': [10, 15, 5, 8, 7, 9],
'player_stat_y':[1, 3, 2, 1,4, 4], 
'player_year': ['2003', '2004','2003', '2004','2003', '2004']}
df = pd.DataFrame(data=d)



# Add a column to show text only for player_A
df['text'] = df['player_names'].apply(lambda x: x if x == 'player_A' else '')

# Create the scatter plot
fig = px.scatter(df.sort_values(['player_year']), 
                 x="player_stat_x", 
                 y="player_stat_y",
                 animation_frame="player_year",
                 text='text'
)

# Show the plot
pio.show(fig)
© www.soinside.com 2019 - 2024. All rights reserved.