使用python简单绘制雷达图

完整代码如下:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib

matplotlib.rcParams['font.family']='SimHei'     #将字体设置为黑体'SimHei'
matplotlib.rcParams['font.sans-serif'] = ['SimHei']

labels = np.array(["语文", "数学", "英语", "化学", "物理","生物","信息"])
dataLenth  = 7       # 数据长度
data = np.array([83, 61, 95, 67, 76, 88, 40])
angles = np.linspace(0,2*np.pi,dataLenth,endpoint=False)   #根据数据长度平均分割圆周长

#闭合
data = np.concatenate((data,[data[0]])) 
angles = np.concatenate((angles,[angles[0]]))
labels=np.concatenate((labels,[labels[0]]))  #对labels进行封闭

fig = plt.figure(facecolor="white")       #facecolor 设置框体的颜色
plt.subplot(111,polar=True)     #将图分成1行1列,画出位置1的图;设置图形为极坐标图
plt.plot(angles,data,'bo-',color ='g',linewidth=2)
plt.fill(angles,data,facecolor='g',alpha=0.25)    #填充两条线之间的色彩,alpha为透明度
plt.thetagrids(angles*180/np.pi,labels)          #做标签
#plt.figtext(0.52,0.95,'雷达图',ha='center')   #添加雷达图标题
plt.grid(True)
plt.show()

补充:

  • numpy.linspace() 函数作为序列生成器,用于在线性空间中以均匀步长生成数字序列。这里使用序列生成器,均匀生成雷达图中每个点相对于极轴的角度(弧度制)。 
  • numpy.concatenate() 函数用于完成数组的拼接。这里是指使雷达图的点数据首尾相连,形成封闭图形​​​​​​。

运行结果如下:

猜你喜欢

转载自blog.csdn.net/weixin_45972980/article/details/124194614