示例代码:
import numpy as np
import matplotlib.pyplot as plt
# 导入数据
data = {
'项目A': [41, 38, 36, 62, 68, 100],
'项目B': [91, 88, 83, 72, 78, 26],
'项目C': [81, 78, 85, 76, 74, 36]
}
# 生成角度序列
num_vars = len(data['项目A'])
angles = np.linspace(0, 2 * np.pi, num_vars, endpoint=False)
# 设置极坐标轴的标签(每个角度对应的标签)
labels = ['项目A', '项目B', '项目C'] *
num_vars // len(labels) + [''] * (num_vars % len(labels))
# 绘制雷达图
fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
ax.fill(angles,
data['项目A'],
color='red') # 项目A的数据点
ax.fill(angles, data['项目B'],
color='blue') # 项目B的数据点
ax.fill(angles,
data['项目C'],
color='green')
# 项目C的数据点
ax.set_yticklabels([])
# 不显示y轴标签
ax.set_xticks(angles)
# 设置x轴刻度位置
ax.set_xticklabels(labels)
# 设置x轴刻度标签
plt.show()
实验:
# 导入库
import numpy as np
import matplotlib.pyplot as plt
# 修改成中文格式
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
# 准备数据
dim_num = 6
# A同学:‘数学’,‘英语’,‘线代’,‘爬虫’,‘数据可视化’,‘吃喝玩乐’ --> 41,38,36,62,68,100
data_a = np.array([41,38,36,62,68,100])
# B同学:‘数学’,‘英语’,‘线代’,‘爬虫’,‘数据可视化’,‘吃喝玩乐’ --> 91,88,83,72,78,26
data_b = np.array([91,88,83,72,78,26])
# C同学:‘数学’,‘英语’,‘线代’,‘爬虫’,‘数据可视化’,‘吃喝玩乐’ --> 81,78,85,76,74,36
data_c = np.array([81,78,85,76,74,36])
# 设置数值序列
angles = np.linspace(0, 2 * np.pi, dim_num, endpoint=False)
# 将多个数组按一定规则组合到一起
angles = np.concatenate((angles, [angles[0]]))
data_a = np.concatenate((data_a, [data_a[0]]))
data_b = np.concatenate((data_b, [data_b[0]]))
data_c = np.concatenate((data_c, [data_c[0]]))
# 设置标签
radar_labels = ['数学','英语','线代','爬虫','数据可视化','吃喝玩乐']
radar_labels = np.concatenate((radar_labels, [radar_labels[0]]))
# 绘制雷达图
plt.polar(angles,data_a,angles,data_b,angles,data_c)
# 设置极坐标的标签
plt.thetagrids(angles * 180/np.pi,labels=radar_labels)
# 填充多边形和设置透明度
plt.fill(angles,data_a,angles,data_b,angles,data_c,alpha=0.3)
# 展示图片
plt.show()