可视化模拟学生课程分数雷达图
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['KaiTi']
plt.rcParams['axes.unicode_minus']=False
#某学生的课程与成绩
courses = ['C++','Python','高数','大学英语','软件工程',
'组成原理','数字图像处理','计算机图形学']
scores = [80,95,78,85,45,65,80,60]
dataLength = len(scores) #数据长度
#angles数组把圆周等分为dataLength份
# np.linspace方法:在[start, stop, num]范围内计算,返回num个(默认为50)均匀间隔的样本。
angles = np.linspace(0, #数组第一个数据
2*np.pi, #数组最后一个数据
dataLength, #数组中数据数量
endpoint=False) #不包含终点
scores.append(scores[0]) #分数列表首尾就是一样的
print(angles,scores)
# np.append返回一个新数组,要使用变量接收
angles = np.append(angles,angles[0])#闭合(数组的第一个点和最后一个点是重合了)
print(angles)
#绘制雷达图 弧度
plt.polar(angles, #确定顶点的角度
scores, #设置各角度上的数据
'rv--', #设置颜色、线型和端点
linewidth=2) #设置线宽
#设置角度网格标签 在每一个角度对应的位置显示课程的名称
plt.thetagrids(angles*180/np.pi,
courses)
#填充雷达图内部
plt.fill(angles,
scores,
facecolor='r',
alpha=0.3)
plt.show()
效果图如下: