[英]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.