有谁知道,是否可以切换颜色,以便我可以区分每一行而不是每一列?以及如何添加图例,在那里我可以看到哪个玩家(每个玩家一种颜色)有例如什么节奏?
我的代码是:
feldspieler = feldspieler["sofifa_id"]
skills = ['pace','shooting','passing','dribbling','defending','physic']
diagramm = plt.figure(figsize=(40,20))
plt.xticks(rotation=90,fontsize=20)
plt.yticks(fontsize=20)
plt.xlabel('Skills', fontsize=30)
plt.ylabel('Skill value', fontsize=30)
plt.title('Spielervergleich', fontsize = 40)
sns.set_palette("pastel")
for i in feldspieler:
i = fifa_21.loc[fifa_21['sofifa_id'] == i]
i = pd.DataFrame(i, columns = skills)
sns.swarmplot(data=i,size=12)
答案 0 :(得分:0)
将 hue
参数设置为您感兴趣的列的值 (sofifa_id
)。然后,您可以一次提供整个数据集来绘制数据。图例将自动添加。
因此,您应该有一个带有 'skills'
列的 DataFrame,其中包含您在此处在 x 轴上拥有的不同技能。如有必要,请参阅 pd.melt
的文档,尤其是第三个示例。
然后,假设熔化后的值使用默认列名 value
,调用
sns.swarmplot(data=fifa_21, x="skills", y="value", hue="sofifa_id")
这是来自官方 swarmplot
函数文档 (here)。
编辑:所以,看到你的数据,你真的应该像这样使用 pd.melt
:
(我正在考虑每个玩家一行,具有不同的 short_name
值)。
data = pd.melt(fifa_21, id_vars='short_name', var_name='skill',
value_vars=['pace', 'shooting', 'passing', 'dribbling',
'defending', 'physic'])
sns.swarmplot(x='skill', y='value', hue='short_name', data=data)
melt
将从 wide
格式转换为列和值
short_name | 节奏 | 拍摄 |
---|---|---|
a_name | 85 | 92 |
到long
表格格式
short_name | 技能 | 价值 |
---|---|---|
a_name | 节奏 | 85 |
a_name | 拍摄 | 92 |
答案 1 :(得分:0)
非常感谢@Trevis。
不幸的是,它仍然不起作用。 在这里你可以找到数据集的截图和图形访问的代码。
while True:
team = input("Welches Team suchen Sie?: ")
if team in fifa_21.values:
break
else:
print("Dieser Verein existiert nicht. Bitte achten Sie auf eine korrekte Schreibweise.")
gesuchtes_team = fifa_21.loc[(fifa_21['club_name'] == team)]
spieler_verein = gesuchtes_team[["sofifa_id","short_name","nationality","age","player_positions","overall","value_eur"]]
spieler_verein = pd.DataFrame(spieler_verein)
spieler_verein = spieler_verein.reset_index(drop=True)
spieler_verein
feldspieler = spieler_verein.loc[spieler_verein.player_positions != "GK", :]
feldspieler = feldspieler.reset_index(drop=True)
feldspieler
feldspieler = feldspieler["sofifa_id"]
skills = ['pace','shooting','passing','dribbling','defending','physic']
diagramm = plt.figure(figsize=(40,20))
plt.xticks(rotation=90,fontsize=20)
plt.yticks(fontsize=20)
plt.xlabel('Skills', fontsize=30)
plt.ylabel('Skill value', fontsize=30)
plt.title('Spielervergleich', fontsize = 40)
sns.set_palette("pastel")
for i in feldspieler:
i = fifa_21.loc[fifa_21['sofifa_id'] == i]
i = pd.DataFrame(i, columns = skills)
sns.swarmplot(data=fifa_21, x="skills", y="skill_value", hue="sofifa_id")
#sns.swarmplot(x =skills, y= pd.DataFrame(i, columns == skills) ,hue= "sofifa_id", data=i,size=12)