Python?matplotlib實戰(zhàn)之雷達(dá)圖繪制
雷達(dá)圖(Radar Chart),也被稱為蛛網(wǎng)圖或星型圖,是一種用于可視化多個變量之間關(guān)系的圖表形式。
雷達(dá)圖是一種顯示多變量數(shù)據(jù)的圖形方法。通常從同一中心點開始等角度間隔地射出三個以上的軸,每個軸代表一個定量變量,各軸上的點依次連接成線或幾何圖形。
雷達(dá)圖可以用來在變量間進(jìn)行對比,或者查看變量中有沒有異常值。
雷達(dá)圖中每個軸的相對位置和角度通常是無信息的。每個變量都具有自己的軸,彼此間的距離相等,所有軸都有相同的刻度。
在將數(shù)據(jù)映射到這些軸上時,需要注意預(yù)先對數(shù)值進(jìn)行標(biāo)準(zhǔn)化處理,保證各個軸之間的數(shù)值比例能夠做同級別的比較。
1. 主要元素
雷達(dá)圖的主要元素包括:
- 坐標(biāo)軸:每個變量對應(yīng)一個射線或軸線,從中心點向外延伸。射線的長度或角度表示該變量的值大小或比例。
- 數(shù)據(jù)點:在每個射線上,根據(jù)變量的值確定相應(yīng)的數(shù)據(jù)點或標(biāo)記點的位置。
- 雷達(dá)鏈:連接各個數(shù)據(jù)點或標(biāo)記點形成的多邊形或區(qū)域,用于表示多個變量之間的關(guān)系。
- 區(qū)域范圍:雷達(dá)鏈所連接的區(qū)域,面積大小代表各個數(shù)據(jù)綜合的結(jié)果。
2. 適用的場景
雷達(dá)圖適用的分析場景包括:
- 比較綜合表現(xiàn):比較多個實體(如產(chǎn)品、團(tuán)隊、個人等)在多個指標(biāo)上的表現(xiàn),幫助決策者了解它們之間的差異和相對優(yōu)劣。
- 評估績效和目標(biāo):幫助評估績效和目標(biāo)達(dá)成情況,從而指導(dǎo)后續(xù)決策和改進(jìn)措施。
- 變量之間的關(guān)系趨勢:直觀地發(fā)現(xiàn)多個變量之間的關(guān)系和趨勢,例如某個變量的增長是否會導(dǎo)致其他變量的變化。
- 強調(diào)優(yōu)勢和劣勢:凸顯實體在某些指標(biāo)上的優(yōu)勢和劣勢,有助于決策者更好地了解實體的特點和優(yōu)勢所在。
3. 不適用的場景
雷達(dá)圖不適用的分析場景有:
- 無序數(shù)據(jù):如果數(shù)據(jù)是無序的,無法明確確定各個變量之間的相對位置和關(guān)系,雷達(dá)圖的效果會大打折扣。
- 數(shù)據(jù)缺失:如果某些變量的數(shù)據(jù)缺失或不完整,將導(dǎo)致雷達(dá)圖無法準(zhǔn)確地展示各個變量之間的關(guān)系和差異。
- 多個并行路徑:當(dāng)存在多個并行路徑時,例如多個團(tuán)隊或產(chǎn)品之間的比較,雷達(dá)圖可能無法清晰地展示它們之間的差異和相對優(yōu)劣。
4. 分析實戰(zhàn)
本次通過雷達(dá)圖來分析下王者榮耀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個屬性來繪制雷達(dá)圖:
- 經(jīng)濟(jì)占比
- 傷害占比
- 承傷占比
- 推塔占比
- 參團(tuán)率
filter_cols = ["選手", "經(jīng)濟(jì)占比", "傷害占比", "承傷占比", "推塔占比", "參團(tuán)率"] 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位選手的雷達(dá)圖:
N = 5 # 雷達(dá)圖屬性個數(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)之雷達(dá)圖繪制的詳細(xì)內(nèi)容,更多關(guān)于Python雷達(dá)圖的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實現(xiàn)Selenium自動化Page模式
這篇文章主要介紹了Python實現(xiàn)Selenium自動化Page模式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07python實現(xiàn)簡易自習(xí)室座位預(yù)約系統(tǒng)
本文將結(jié)合實例代碼,介紹python實現(xiàn)簡易自習(xí)室座位預(yù)約系統(tǒng),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-06-06Python 讀寫 Matlab Mat 格式數(shù)據(jù)的操作
這篇文章主要介紹了Python 讀寫 Matlab Mat 格式數(shù)據(jù)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-05-05Python 檢查數(shù)組元素是否存在類似PHP isset()方法
isset方法來檢查數(shù)組元素是否存在,在Python中無對應(yīng)函數(shù),在Python中一般可以通過異常來處理數(shù)組元素不存在的情況,而無須事先檢查2014-10-10python使用numpy實現(xiàn)直方圖反向投影示例
今天小編就為大家分享一篇python使用numpy實現(xiàn)直方圖反向投影示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01pytest?用例執(zhí)行失敗后其他不再執(zhí)行
本文主要介紹了pytest?用例執(zhí)行失敗后其他不再執(zhí)行,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02