Python?matplotlib實戰(zhàn)之雷達圖繪制
雷達圖(Radar Chart),也被稱為蛛網(wǎng)圖或星型圖,是一種用于可視化多個變量之間關(guān)系的圖表形式。
雷達圖是一種顯示多變量數(shù)據(jù)的圖形方法。通常從同一中心點開始等角度間隔地射出三個以上的軸,每個軸代表一個定量變量,各軸上的點依次連接成線或幾何圖形。
雷達圖可以用來在變量間進行對比,或者查看變量中有沒有異常值。
雷達圖中每個軸的相對位置和角度通常是無信息的。每個變量都具有自己的軸,彼此間的距離相等,所有軸都有相同的刻度。
在將數(shù)據(jù)映射到這些軸上時,需要注意預(yù)先對數(shù)值進行標準化處理,保證各個軸之間的數(shù)值比例能夠做同級別的比較。
1. 主要元素
雷達圖的主要元素包括:
- 坐標軸:每個變量對應(yīng)一個射線或軸線,從中心點向外延伸。射線的長度或角度表示該變量的值大小或比例。
- 數(shù)據(jù)點:在每個射線上,根據(jù)變量的值確定相應(yīng)的數(shù)據(jù)點或標記點的位置。
- 雷達鏈:連接各個數(shù)據(jù)點或標記點形成的多邊形或區(qū)域,用于表示多個變量之間的關(guān)系。
- 區(qū)域范圍:雷達鏈所連接的區(qū)域,面積大小代表各個數(shù)據(jù)綜合的結(jié)果。

2. 適用的場景
雷達圖適用的分析場景包括:
- 比較綜合表現(xiàn):比較多個實體(如產(chǎn)品、團隊、個人等)在多個指標上的表現(xiàn),幫助決策者了解它們之間的差異和相對優(yōu)劣。
- 評估績效和目標:幫助評估績效和目標達成情況,從而指導(dǎo)后續(xù)決策和改進措施。
- 變量之間的關(guān)系趨勢:直觀地發(fā)現(xiàn)多個變量之間的關(guān)系和趨勢,例如某個變量的增長是否會導(dǎo)致其他變量的變化。
- 強調(diào)優(yōu)勢和劣勢:凸顯實體在某些指標上的優(yōu)勢和劣勢,有助于決策者更好地了解實體的特點和優(yōu)勢所在。
3. 不適用的場景
雷達圖不適用的分析場景有:
- 無序數(shù)據(jù):如果數(shù)據(jù)是無序的,無法明確確定各個變量之間的相對位置和關(guān)系,雷達圖的效果會大打折扣。
- 數(shù)據(jù)缺失:如果某些變量的數(shù)據(jù)缺失或不完整,將導(dǎo)致雷達圖無法準確地展示各個變量之間的關(guān)系和差異。
- 多個并行路徑:當存在多個并行路徑時,例如多個團隊或產(chǎn)品之間的比較,雷達圖可能無法清晰地展示它們之間的差異和相對優(yōu)劣。
4. 分析實戰(zhàn)
本次通過雷達圖來分析下王者榮耀KPL聯(lián)盟幾位選手的比賽數(shù)據(jù)。
4.1. 數(shù)據(jù)來源
數(shù)據(jù)來自王者榮耀官網(wǎng)(2023年春季賽數(shù)據(jù)),整理好的數(shù)據(jù)可以從下面下載:https://databook.top/wzry/2023-spring
使用其中的文件:player-2023春季賽.csv
fp = "d:/share/data/player-2023春季賽.csv" df = pd.read_csv(fp) df
4.2. 數(shù)據(jù)清理
選手的數(shù)據(jù)一共有125條,本來想按勝率選擇最高的4位選手,發(fā)現(xiàn)勝率高的選手很多只參加了1,2場比賽。
所以選擇參加比賽最多的6位選手來分析。
data = df.sort_values("比賽場次", ascending=False)
data = data.iloc[:6]
data選擇每位選手下列5個屬性來繪制雷達圖:
- 經(jīng)濟占比
- 傷害占比
- 承傷占比
- 推塔占比
- 參團率
filter_cols = ["選手", "經(jīng)濟占比", "傷害占比", "承傷占比", "推塔占比", "參團率"] data = data.loc[:, filter_cols] data

將百分比數(shù)據(jù)轉(zhuǎn)為數(shù)值類型:
for col in filter_cols[1:]:
data[col] = data[col].str.replace("%", "", regex=False)
data[col] = data[col].astype("float")
data
4.3. 分析結(jié)果可視化
繪制6位選手的雷達圖:
N = 5 # 雷達圖屬性個數(shù)
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的隊員,說明他們的首發(fā)陣容很穩(wěn)定。
5個屬性連接起來的面積,看起來還是射手和打野的比較大,C位果然還是得看這兩個位置。
以上就是Python matplotlib實戰(zhàn)之雷達圖繪制的詳細內(nèi)容,更多關(guān)于Python雷達圖的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python Selenium中常用的元素定位方法總結(jié)
在Web自動化測試中,元素定位是一項非常重要的技術(shù),Python Selenium提供了各種元素定位方法,可以幫助我們定位頁面上的元素并與之交互,本文將詳細介紹Python Selenium中常用的元素定位方法,并提供實例代碼,需要的朋友可以參考下2023-11-11
Python中g(shù)etpass模塊無回顯輸入源碼解析
這篇文章主要介紹了Python中g(shù)etpass模塊無回顯輸入源碼解析,具有一定借鑒價值,需要的朋友可以參考下2018-01-01
舉例詳解Python中的split()函數(shù)的使用方法
這篇文章主要介紹了舉例詳解Python中的split()函數(shù)的使用方法,split()函數(shù)的使用是Python學(xué)習(xí)當中的基礎(chǔ)知識,通常用于將字符串切片并轉(zhuǎn)換為列表,需要的朋友可以參考下2015-04-04
python中的單引號雙引號區(qū)別知識點總結(jié)
在本篇文章中小編給大家整理了關(guān)于python中的單引號雙引號有什么區(qū)別的相關(guān)知識點以及實例代碼,需要的朋友們參考下。2019-06-06
學(xué)習(xí)python 的while循環(huán)嵌套
這篇文章主要為大家介紹了python 的while循環(huán)嵌套,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-12-12

