簡體   English   中英

如何以不同的顏色分散 plot 並在 python 中添加圖例?

[英]how to scatter plot in different colours and add a legend in python?

從以下 df 我提取了所需的行

**name**  **event**        **X**         **Y**
peter       run             20             50
peter       jog             30             25
peter       swim            21             22 
peter       walk            28             32
jon         swim            20             51

我已經運行了以下代碼

mask_activity = df.event.isin (['run','jog','swim']) & (df.name == "peter")
                                                     
df_activity = df.loc[mask_activity, ['X','Y']]

我想 plot 在 map 中使用三種不同顏色調用音高的那些動作並為其添加圖例


pitch = Pitch(line_color='black')
fig, ax = pitch.grid(grid_height=0.9, title_height=0.06, axis=False, 
                     endnote_height=0.04, title_space=0, endnote_space=0)

pitch.scatter(df_activity.x, df_activity.y, alpha = 1, s = 500, color = "blue", ax=ax['pitch'])
fig.suptitle("activity", fontsize = 30)

plt.show()

非常感謝您的幫助

在散點plot的基礎上,將事件名稱添加到forms的數據中,並通過關聯事件和colors來循環繪制圖形。 如果 label 設置為事件名稱,將顯示在圖例設置中。 由於標記尺寸較大,因此調整了圖例中標簽之間的間距。

mask_activity = df.event.isin (['run','jog','swim']) & (df.name == "peter")                                       
df_activity = df.loc[mask_activity, ['event','X','Y']]

df_activity
    event   X   Y
0   run     20  50
1   jog     30  25
2   swim    21  22

import matplotlib.pyplot as plt
from mplsoccer import Pitch, VerticalPitch

pitch = Pitch(line_color='black')
fig, ax = pitch.grid(grid_height=0.9, title_height=0.06, axis=False, 
                     endnote_height=0.04, title_space=0, endnote_space=0)

colors = {'run': 'blue', 'jog': 'green', 'swim': 'red'}
for row in df_activity.itertuples():
    c = colors[row[1]]
    pitch.scatter(row[2], row[3], alpha = 1, s = 500, color = c, label=row[1], ax=ax['pitch'])

fig.suptitle("activity", fontsize = 30)
ax['pitch'].legend(labelspacing=2)
plt.show()

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM