
文章鏈接:
https://mp.weixin.qq.com/s/Fm_W7QOfHXG6GsAIO8V69Q
有一種圖他可以根據(jù)指定指標(biāo)評價體系,給予評價并直觀反映出來,如:
1、從企業(yè)收益性、生產(chǎn)性、流動性、安全性和成長性這幾個方面評判經(jīng)營狀況;
2、根據(jù)9型人格每個維度打分,你屬于什么類型;
3、王者榮耀中英雄“殺、死、助、團戰(zhàn)率、推塔數(shù)、經(jīng)濟比”等評分的直觀體現(xiàn)等等。
對的,他就是我們今天要介紹給大家的雷達圖,英文名
Radar Chart,乳名蜘蛛網(wǎng)圖,學(xué)名星圖,別名戴布拉圖,他的坐標(biāo)軸很特別——平行坐標(biāo),軸徑向排列~O(∩_∩)O哈哈~
目? 錄
極坐標(biāo)介紹
Matplotlib繪制極坐標(biāo)圖
常用參數(shù)介紹
代碼實現(xiàn)
極坐標(biāo)介紹
極坐標(biāo)
1、極點:在平面內(nèi)取一個定點O;
2、極軸:引一條射線Ox
3、極徑:選定一個長度單位和角度的正方向(通常取逆時針方向)。對于平面內(nèi)任何一點M,用ρ表示線段OM的長度(有時也用r表示),θ表示從Ox到OM的角度,ρ叫做點M的極徑
4、極角:θ叫做點M的極角,
5、極坐標(biāo):有序數(shù)對 (ρ,θ)就叫點M的極坐標(biāo),這樣建立的坐標(biāo)系叫做極坐標(biāo)系。
通常情況下,M的極徑坐標(biāo)單位為1(長度單位),極角坐標(biāo)單位為rad(或°)

Matplotlib繪制極坐標(biāo)圖
創(chuàng)建極坐標(biāo)圖
matplotlib的pyplot子庫提供了繪制極坐標(biāo)圖的方法,在調(diào)用subplot()創(chuàng)建子圖時通過設(shè)置projection='polar',便可創(chuàng)建一個極坐標(biāo)子圖,然后調(diào)用plot()在極坐標(biāo)子圖中繪圖。
下面創(chuàng)建一個極坐標(biāo)子圖和一個直角坐標(biāo)子圖進行對比:
import numpy as np
from matplotlib import pyplot as plt
fig=plt.figure(figsize=(10,5))
ax1 = plt.subplot(121, projection='polar')? #極坐標(biāo)軸
ax2 = plt.subplot(122)
fig.subplots_adjust(wspace=0.4) #設(shè)置子圖間的間距,為子圖寬度的40%
theta=np.arange(0,2*np.pi,0.02)
ax1.plot(theta,theta/6,'-.',lw=2)
ax2.plot(theta,theta/6,'-.',lw=2)
plt.show()

常用參數(shù)介紹
繪制雷達圖,并沒有直接的函數(shù),而是用一下坐標(biāo)軸的參數(shù)予以定義。
極坐標(biāo)正方向
set_theta_direction:方法用于設(shè)置極坐標(biāo)的正方向
set_theta_direction的參數(shù)值為1,'counterclockwise'或者是'anticlockwise'的時候,正方向為逆時針;
set_theta_direction的參數(shù)值為-1或者是'clockwise'的時候,正方向為順時針;
極坐標(biāo)0°位置
set_theta_zero_location方法用于設(shè)置極坐標(biāo)0°位置
0°可設(shè)置在八個位置,分別為N, NW, W, SW, S, SE, E, NE
參數(shù)值為'N','NW','W','SW','S','SE','E','NE'時,0°分別對應(yīng)的位置為方位N, NW, W, SW, S, SE, E, NE;
極坐標(biāo)角度網(wǎng)格線顯示
set_thetagrids方法用于設(shè)置極坐標(biāo)角度網(wǎng)格線顯示
參數(shù)為所要顯示網(wǎng)格線的角度值列表
默認顯示0°、45°、90°、135°、180°、225°、270°、315°的網(wǎng)格線
極坐標(biāo)角度偏離
set_theta_offset方法用于設(shè)置角度偏離
參數(shù)值為弧度值數(shù)值
極坐標(biāo)極徑網(wǎng)格線顯示
set_rgrids方法用于設(shè)置極徑網(wǎng)格線顯示
參數(shù)值為所要顯示網(wǎng)格線的極徑值列表,最小值不能小于等于0
極坐標(biāo)極徑標(biāo)簽位置
set_rlabel_position方法用于設(shè)置極徑標(biāo)簽顯示位置
參數(shù)為標(biāo)簽所要顯示在的角度
極坐標(biāo)極徑范圍
set_rlim方法用于設(shè)置顯示的極徑范圍
參數(shù)為極徑最小值,最大值
極坐標(biāo)極徑最大值
set_rmax方法用于設(shè)置顯示的極徑最大值
該方法要在繪制完圖像后使用才有效
極坐標(biāo)極徑最小值
set_rmin方法用于設(shè)置顯示的極徑最小值
該方法要在繪制完圖像后使用才有效
極坐標(biāo)極徑網(wǎng)格線顯示范圍
set_rticks方法用于設(shè)置極徑網(wǎng)格線的顯示范圍
如ax.set_rticks(np.arange(0.1, 0.9, 0.2))
代碼實現(xiàn)
import numpy as np
from matplotlib import pyplot as plt
fig=plt.figure(figsize=(10,5))
ax=fig.add_subplot(1,1,1,polar=True) #設(shè)置一個坐標(biāo)軸為極坐標(biāo)體系
jingke={"推進":100,"戰(zhàn)績(KDA)":30,"生存":90,"團戰(zhàn)":60,"發(fā)育":60,"輸出":20} #創(chuàng)建英雄數(shù)據(jù)
y=np.array([i for i in jingke.values()]).astype(int) #提取英雄的信息
label=np.array([j for j in jingke.keys()]) #提取鍵作為標(biāo)簽
x = np.linspace(0, 2*np.pi, len(data1), endpoint=False) #data1里有幾個數(shù)據(jù),就把整圓360°分成幾份
x1 = np.concatenate((x, [x[0]])) #將x的第一個值添加到原來的x組成第一個和最后一個元素一致的新列表,以實現(xiàn)x閉合
y1 = np.concatenate((y, [y[0]])) #將y的第一個值添加到原來的y組成第一個和最后一個元素一致的新列表,以實現(xiàn)y閉合
#繪制極坐標(biāo)
ax.set_thetagrids(angles*180/np.pi, label, fontproperties="Microsoft Yahei") #設(shè)置網(wǎng)格標(biāo)簽
ax.plot(x1,y1,"o-")
ax.set_theta_zero_location('E') #設(shè)置極坐標(biāo)0°位置
ax.set_rlim(0,100) #設(shè)置顯示的極徑范圍
ax.fill(x1,y1,facecolor='b', alpha=0.2) #填充顏色
ax.set_rlabel_position(15)
ax.set_title("荊軻",fontproperties="SimHei",fontsize=16) #設(shè)置標(biāo)題
plt.show()
效果圖如下:

更多精彩內(nèi)容,就在官方微信公眾號
https://mp.weixin.qq.com/s/Fm_W7QOfHXG6GsAIO8V69Q