绘制雷达图
例如:
A同学成绩: '数学','英语','线代','爬虫','数据可视化','吃喝玩乐' ---> 41,38,36,62,68,100
B同学成绩: '数学','英语','线代','爬虫','数据可视化','吃喝玩乐' ---> 91,88,83,72,78,26
C同学成绩: '数学','英语','线代','爬虫','数据可视化','吃喝玩乐' ---> 81,78,85,76,74,36
绘制需求: 请把B同学和C同学的成绩用雷达图展示在同一个绘图区域,并填充不同颜色和透明度 (只允许调用一次plt.polar和plt.fill)
代码:
导入模块
import numpy as np
import matplotlib.pyplot as plt
设置中文
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
准备三位同学各科目的成绩
dim_num = 6
radians = np.linspace(0, 2 * np.pi, dim_num, endpoint=False)
radians = np.concatenate((radians, [radians[0]]))
score_A = np.array([41,38,36,62,68,100])
score_A = np.concatenate((score_A, [score_A[0]]))
score_B = np.array([91,88,83,72,78,26])
score_B = np.concatenate((score_B, [score_B[0]]))
score_C = np.array([ 81,78,85,76,74,36])
score_C = np.concatenate((score_C, [score_C[0]]))
绘制多边形(雷达图)
plt.polar(radians,score_A,
radians,score_B,
radians,score_C)
设置维度标签
radar_labels = ['数学','英语','线代','爬虫','数据可视化','吃喝玩乐']
radar_labels = np.concatenate((radar_labels, [radar_labels[0]]))
设置极坐标的标签
angles = radians * 180/np.pi # 弧度转角度
plt.thetagrids(angles, labels=radar_labels)
填充多边形
plt.fill(radians,score_A,color='r',alpha=0.2)
plt.fill(radians,score_B,color='g',alpha=0.2)
plt.fill(radians,score_C,color='b',alpha=0.4)
展示雷达图
plt.show()
运行结果: