Python matplotlib 画 雷达图

2021-12-21  本文已影响0人  火卫控

有几组数据需要呈现,多维比较,适合雷达图

结果如下:


各种疫苗特性.png

代码如下:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['font.sans-serif'] = ['SimHei']

labels = np.array(['综合','安全性','体液免疫','细胞免疫'])
# labels = np.array(['综合','KDA','发育','推进','生存','输出'])
labels = np.concatenate((labels,[labels[0]]))

nAttr = 4
# 特好 好 较好 差   100  85 70 55
# 3 3 1
# 2 3 4
# 4 3 1
# 2 2 3
# 75/3,
# 225/3
# 200/3
# 175/3
# 200/3

data1 = np.array([100*(175/3)/(225/3),85,85,25])
data2 = np.array([100*(225/3)/(225/3),50,75,100])
data3 = np.array([100*(200/3)/(225/3),100,75,25])
data4 = np.array([100*(175/3)/(225/3),50,50,75])
data5 = np.array([100*(200/3)/(225/3),75,75,50])

data2 = np.concatenate((data2,[data2[0]]))
data3 = np.concatenate((data3,[data3[0]]))
data4 = np.concatenate((data4,[data4[0]]))
data5 = np.concatenate((data5,[data5[0]]))


angles = np.linspace(0+np.pi/2,np.pi/2+2*np.pi,nAttr,endpoint=False)
data1 = np.concatenate((data1,[data1[0]]))
angles = np.concatenate((angles,[angles[0]]))
fig = plt.figure(facecolor="white")
plt.subplot(111,polar=True)

# for values in [values1, values2]:
# # 拼接数据首尾,使图形中线条封闭
#     values=np.concatenate((values,[values[0]]))
#     # 设置为极坐标格式
#     ax = fig.add_subplot(111, polar=True)
#     # 绘制折线图
#     ax.plot(angles, values, 'o-', linewidth=2)
#     # 填充颜色
#     ax.fill(angles, values, alpha=0.25)
     
#     # 设置图标上的角度划分刻度,为每个数据点处添加标签
#     ax.set_thetagrids(angles * 180/np.pi, feature)
     
#     # 设置雷达图的范围
#     ax.set_ylim(0,5)

plt.plot(angles,data1,'-',color ='g',linewidth=1,alpha=0.45,label='灭活疫苗')
plt.fill(angles,data1,facecolor='g',alpha=0.25)
plt.thetagrids(angles*180/np.pi,labels)

plt.plot(angles,data2,'-',color ='y',linewidth=1,alpha=0.45,label='减毒活疫苗')
plt.fill(angles,data2,facecolor='y',alpha=0.25)
# plt.thetagrids(angles*180/np.pi,labels)

plt.plot(angles,data3,'-',color ='r',linewidth=1,alpha=0.45,label='亚单位疫苗')
plt.fill(angles,data3,facecolor='r',alpha=0.25)
# plt.thetagrids(angles*180/np.pi,labels)

plt.plot(angles,data4,'-',color ='grey',linewidth=1,alpha=0.45,label='活载体疫苗')
plt.fill(angles,data4,facecolor='grey',alpha=0.25)
# plt.thetagrids(angles*180/np.pi,labels)

plt.plot(angles,data5,'-',color ='blue',linewidth=1,alpha=0.45,label='核酸疫苗')
plt.fill(angles,data5,facecolor='blue',alpha=0.25)
# plt.thetagrids(angles*180/np.pi,labels)



plt.figtext(0.515,0.95,'各种疫苗特性2',ha='center')

plt.legend(loc='best')
plt.grid(True)
# plt.savefig("各种疫苗特性.png",dpi=600)
plt.show()

调整角度区间可以改变位置,如下:


各种疫苗特性.png
上一篇下一篇

猜你喜欢

热点阅读