Matplotlib學習---用matplotlib畫雷達圖(radar chart)


雷達圖常用於對多項指標的全面分析。例如:HR想要比較兩個應聘者的綜合素質,用雷達圖分別畫出來,就可以進行直觀的比較。

 

用Matplotlib畫雷達圖需要使用極坐標體系,可點擊此鏈接,查看對極坐標體系的介紹:https://www.cnblogs.com/kallan/p/6738577.html

 

下面,我們從五個方面(編程能力,溝通技能,專業知識,團隊協作,工具掌握)來對路人甲和路人乙進行比較。

 

代碼如下:

import numpy as np
from matplotlib import pyplot as plt
fig=plt.figure(figsize=(10,5))
ax1=fig.add_subplot(1,2,1,polar=True) #設置第一個坐標軸為極坐標體系
ax2=fig.add_subplot(1,2,2,polar=True) #設置第二個坐標軸為極坐標體系
fig.subplots_adjust(wspace=0.4) #設置子圖間的間距,為子圖寬度的40%

p1={"編程能力":60,"溝通技能":70,"專業知識":65,"團體協作":75,"工具掌握":80} #創建第一個人的數據
p2={"編程能力":70,"溝通技能":60,"專業知識":75,"團體協作":65,"工具掌握":70} #創建第二個人的數據

data1=np.array([i for i in p1.values()]).astype(int) #提取第一個人的信息
data2=np.array([i for i in p2.values()]).astype(int) #提取第二個人的信息
label=np.array([j for j in p1.keys()]) #提取標簽

angle = np.linspace(0, 2*np.pi, len(data1), endpoint=False) #data里有幾個數據,就把整圓360°分成幾份
angles = np.concatenate((angle, [angle[0]])) #增加第一個angle到所有angle里,以實現閉合
data1 = np.concatenate((data1, [data1[0]])) #增加第一個人的第一個data到第一個人所有的data里,以實現閉合
data2 = np.concatenate((data2, [data2[0]])) #增加第二個人的第一個data到第二個人所有的data里,以實現閉合

#設置第一個坐標軸
ax1.set_thetagrids(angles*180/np.pi, label, fontproperties="Microsoft Yahei") #設置網格標簽
ax1.plot(angles,data1,"o-")
ax1.set_theta_zero_location('NW') #設置極坐標0°位置
ax1.set_rlim(0,100) #設置顯示的極徑范圍
ax1.fill(angles,data1,facecolor='g', alpha=0.2) #填充顏色
ax1.set_rlabel_position('255') #設置極徑標簽位置
ax1.set_title("路人甲",fontproperties="SimHei",fontsize=16) #設置標題

#設置第二個坐標軸
ax2.set_thetagrids(angles*180/np.pi, label, fontproperties="Microsoft Yahei") #設置網格標簽
ax2.plot(angles,data2,"o-")
ax2.set_theta_zero_location('NW') #設置極坐標0°位置
ax2.set_rlim(0,100) #設置顯示的極徑范圍
ax2.fill(angles,data2,facecolor='g', alpha=0.2) #填充顏色
ax2.set_rlabel_position('255') #設置極徑標簽位置
ax2.set_title("路人乙",fontproperties="SimHei",fontsize=16) #設置標題

plt.show()

 

圖像如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM