雷達圖常用於對多項指標的全面分析。例如: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()
圖像如下: