需求一: 请把B同学和C同学的成绩用雷达图展示在同一个绘图区域,并填充不同颜色和透明度
# (只允许调用一次plt.polar和plt.fill)
# B同学成绩: '数学','英语','线代','爬虫','数据可视化','吃喝玩乐' ---> 91,88,83,72,78,26
# C同学成绩: '数学','英语','线代','爬虫','数据可视化','吃喝玩乐' ---> 81,78,85,76,74,36
1、导入模块和设置中文
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
2、准备大数据专业B、C两位同学各科目成绩
dim_num = 6
radians = np.linspace(0, 2*np.pi, dim_num, endpoint=False)
radians = np.concatenate((radians, [radians[0]])) # 点的弧度(与极径)
score = np.array( [51, 62, 49, 65, 68, 99])
score = np.concatenate((score, [score[0]]))
3、设置维度标签
plt.fill(radians, score_b,'g',radians,score_c,'k',alpha=0.25)
radar_labels = ['数学','现代','英语','爬虫','可视化', '吃喝玩乐'] # 点的距离(到原点)
plt.polar(radians, score) # 极坐标系下绘制折线图的函数
# 大数据A班某同学成绩: 数学,现代,英语,爬虫,可视化,吃喝玩乐 ---> 51, 62, 49, 65, 68, 99
# 1 rad = 180°/ pi = 57°
-
4、设置极坐标的标签
angles = radians * 180./ np.pi # 弧度转角度 plt.thetagrids(angles, radar_labels) # thetagrids接收的是角度,而不是弧度
5、填充多边形(只允许调用一次plt.fill)
-
plt.fill(radians, score_b,'g',radians,score_c,'k',alpha=0.25)
6、绘制雷达图
plt.thetagrids(angles, labels=radar_labels) # 设置新的刻度标签 plt.show()