Python數據分析入門(二十二):數據可視化之繪制雷達圖


雷達圖

雷達圖(Radar Chart)又被叫做蜘蛛網圖,適用於顯示三個或更多的維度的變量的強弱情況。比如英雄聯盟中某個影響的屬性(法術傷害,物理防御等),或者是某個企業在哪些業務方面的投入等,都可以用雷達圖方便的表示。

使用plt.polar繪制雷達圖:

matplotlib.pyplot中,可以通過plt.polar來繪制雷達圖,這個方法的參數跟plt.plot非常的類似,只不過是x軸的坐標點應該為弧度(2*PI=360°)。示例代碼如下:

properties = ['輸出','KDA','發育','團戰','生存']
values = [40,91,44,90,95,40]
theta = np.linspace(0,np.pi*2,6)
plt.polar(theta,values)
plt.xticks(theta,properties,fontproperties=font)
plt.fill(theta,values)

 

效果圖如下:

 

 

 

 

其中有幾點需要注意:

  1. 因為polar並不會完成線條的閉合繪制,所以我們在繪制的時候需要在theta中和values中在最后多重復添加第0個位置的值,然后在繪制的時候就可以和第1個點進行閉合了。
  2. polar只是繪制線條,所以如果想要把里面進行顏色填充,那么需要調用fill函數來實現。
  3. polar默認的圓圈的坐標是角度,如果我們想要改成文字顯示,那么可以通過xticks來設置。

使用子圖繪制雷達圖:

在多子圖中,繪圖對象不再是pyplot而是Axes,而Axes及其子類繪制雷達圖則是通過將直角坐標轉換成極坐標,然后再繪制折線圖。示例代碼如下:

  1. 使用plt.subplot繪制的子圖:
 properties = ['輸出','KDA','發育','團戰','生存']
 values = [40,91,44,90,95,40]
 theta = np.linspace(0,np.pi*2,6)
 # 生成一個子圖,並且指定子圖的類型為polar
 axes = plt.subplot(111,projection="polar")
 axes.plot(theta,values)
 axes.fill(theta,values)

 

  1. 使用plt.subplots繪制的子圖:
 properties = ['輸出','KDA','發育','團戰','生存']
 values = [40,91,44,90,95,40]
 theta = np.linspace(0,np.pi*2,6)
 figure,axes = plt.subplots(1,1,subplot_kw={"projection":"polar"})
 axes.plot(theta,values)

 

  1. 使用fig.add_subplot繪制的子圖:
 properties = ['輸出','KDA','發育','團戰','生存']
 values = [40,91,44,90,95,40]
 theta = np.linspace(0,np.pi*2,6)
 fig = plt.figure(figsize=(10,10))
 axes = fig.add_subplot(111,polar=True)
 axes.plot(theta,values)

 


免責聲明!

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



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