雷達圖(Radar Chart),也被稱為蛛網圖或星型圖,是一種用於可視化多個變數之間關係的圖表形式。雷達圖是一種顯示多變數數據的圖形方法。通常從同一中心點開始等角度間隔地射出三個以上的軸,每個軸代表一個定量變數,各軸上的點依次連接成線或幾何圖形。 雷達圖可以用來在變數間進行對比,或者查看變數中有沒 ...
雷達圖(Radar Chart),也被稱為蛛網圖或星型圖,是一種用於可視化多個變數之間關係的圖表形式。
雷達圖是一種顯示多變數數據的圖形方法。通常從同一中心點開始等角度間隔地射出三個以上的軸,每個軸代表一個定量變數,各軸上的點依次連接成線或幾何圖形。
雷達圖可以用來在變數間進行對比,或者查看變數中有沒有異常值。
雷達圖中每個軸的相對位置和角度通常是無信息的。每個變數都具有自己的軸,彼此間的距離相等,所有軸都有相同的刻度。
在將數據映射到這些軸上時,需要註意預先對數值進行標準化處理,保證各個軸之間的數值比例能夠做同級別的比較。
1. 主要元素
雷達圖的主要元素包括:
- 坐標軸:每個變數對應一個射線或軸線,從中心點向外延伸。射線的長度或角度表示該變數的值大小或比例。
- 數據點:在每個射線上,根據變數的值確定相應的數據點或標記點的位置。
- 雷達鏈:連接各個數據點或標記點形成的多邊形或區域,用於表示多個變數之間的關係。
- 區域範圍:雷達鏈所連接的區域,面積大小代表各個數據綜合的結果。
2. 適用的場景
雷達圖適用的分析場景包括:
- 比較綜合表現:比較多個實體(如產品、團隊、個人等)在多個指標上的表現,幫助決策者瞭解它們之間的差異和相對優劣。
- 評估績效和目標:幫助評估績效和目標達成情況,從而指導後續決策和改進措施。
- 變數之間的關係趨勢:直觀地發現多個變數之間的關係和趨勢,例如某個變數的增長是否會導致其他變數的變化。
- 強調優勢和劣勢:凸顯實體在某些指標上的優勢和劣勢,有助於決策者更好地瞭解實體的特點和優勢所在。
3. 不適用的場景
雷達圖不適用的分析場景有:
- 無序數據:如果數據是無序的,無法明確確定各個變數之間的相對位置和關係,雷達圖的效果會大打折扣。
- 數據缺失:如果某些變數的數據缺失或不完整,將導致雷達圖無法準確地展示各個變數之間的關係和差異。
- 多個並行路徑:當存在多個並行路徑時,例如多個團隊或產品之間的比較,雷達圖可能無法清晰地展示它們之間的差異和相對優劣。
4. 分析實戰
本次通過雷達圖來分析下王者榮耀KPL聯盟幾位選手的比賽數據。
4.1. 數據來源
數據來自王者榮耀官網(2023年春季賽數據),整理好的數據可以從下麵下載:
https://databook.top/wzry/2023-spring
使用其中的文件:player-2023春季賽.csv
fp = "d:/share/data/player-2023春季賽.csv"
df = pd.read_csv(fp)
df
4.2. 數據清理
選手的數據一共有125
條,本來想按勝率選擇最高的4位選手,發現勝率高的選手很多只參加了1,2場比賽。
所以選擇參加比賽最多的6位選手來分析。
data = df.sort_values("比賽場次", ascending=False)
data = data.iloc[:6]
data
選擇每位選手下列5個屬性來繪製雷達圖:
- 經濟占比
- 傷害占比
- 承傷占比
- 推塔占比
- 參團率
filter_cols = ["選手", "經濟占比", "傷害占比", "承傷占比", "推塔占比", "參團率"]
data = data.loc[:, filter_cols]
data
將百分比數據轉為數值類型:
for col in filter_cols[1:]:
data[col] = data[col].str.replace("%", "", regex=False)
data[col] = data[col].astype("float")
data
4.3. 分析結果可視化
繪製6位選手的雷達圖:
N = 5 # 雷達圖屬性個數
angles = np.linspace(0, 2 * np.pi, N, endpoint=False)
angles = np.concatenate((angles, [angles[0]]))
fig = plt.figure(figsize=[10, 6])
for i in range(len(data)):
values = data.iloc[i, 1:].tolist()
values.append(values[0])
position = "23" + str(i + 1)
ax = fig.add_subplot(int(position), polar=True)
ax.plot(angles, values, "o-")
ax.fill(angles, values, alpha=0.4)
ax.set_thetagrids(angles[:-1] * 180 / np.pi,
data.columns[1:].tolist())
ax.set_title(data.iloc[i, 0], color="b")
ax.set_ylim(0, 100)
plt.subplots_adjust(hspace=0.5)
參賽最多的6位選手,5位都是佛山DRG的隊員,說明他們的首發陣容很穩定。
5個屬性連接起來的面積,看起來還是射手和打野的比較大,C位果然還是得看這兩個位置。