雷达图中的每个维度都用一个弧线表示,弧线的长度和方向代表了该维度上成绩的大小和变化趋势。
目录
前言
NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
一、NumPy导入库
NumPy是使用Python进行科学计算的基础软件包。除其他外,它包括:
- 功能强大的N维数组对象。
- 精密广播功能函数。
- 集成 C/C+和Fortran 代码的工具。
- 强大的线性代数、傅立叶变换和随机数功能。
二、使用步骤
代码如下(示例):
#引入库
import numpy as np
import matplotlib.pyplot as plt
二、设置中文
代码如下(示例):
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
三、准备三名同学各科目成绩数据
代码如下(示例):
1.准备大数据专业三位同学各科目成绩
dim_num = 8
radians = np.linspace(0, 2 * np.pi, dim_num, endpoint=False)
radians = np.concatenate((radians, [radians[0]]))
# A同学:'数学','英语','线代','爬虫','数据可视化','吃喝玩乐','社团','单片机'
score_a = np.array([50,70,36,62,68,90,98,52]) #创建一维数组存储数据
score_a = np.concatenate((score_a, [score_a[0]]))
# B同学:'数学','英语','线代','爬虫','数据可视化','吃喝玩乐','社团','单片机'
score_b = np.array([99,88,53,87,66,45,40,100]) #创建一维数组存储数据
score_b = np.concatenate((score_b, [score_b[0]]))
# C同学:'数学','英语','线代','爬虫','数据可视化','吃喝玩乐','社团','单片机'
score_c = np.array([61,50,55,64,82,50,70,40]) #创建一维数组存储数据
score_c = np.concatenate((score_c, [score_c[0]]))
四、绘制多边形(雷达图)
plt.polar(radians,score_a,radians,score_b,radians,score_c)
注意:只允许调用一次plt.polar
五、设置维度标签
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,'violet',radians,score_b,'r',radians,score_b,'b',alpha=0.5)
注意:只允许调用一次plt.fill
八、展示图表
plt.show()
九:运行结果图形展示:
十、全部运行代码:
#一、导入库
import numpy as np
import matplotlib.pyplot as plt
#二、设置中文
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
#三、准备三名同学各科目成绩数据
# 1.准备大数据专业三位同学各科目成绩
dim_num = 8
radians = np.linspace(0, 2 * np.pi, dim_num, endpoint=False)
radians = np.concatenate((radians, [radians[0]]))
# A同学:'数学','英语','线代','爬虫','数据可视化','吃喝玩乐','社团','单片机'
score_a = np.array([50,70,36,62,68,90,98,52]) #创建一维数组存储数据
score_a = np.concatenate((score_a, [score_a[0]]))
# B同学:'数学','英语','线代','爬虫','数据可视化','吃喝玩乐','社团','单片机'
score_b = np.array([99,88,53,87,66,45,40,100]) #创建一维数组存储数据
score_b = np.concatenate((score_b, [score_b[0]]))
# C同学:'数学','英语','线代','爬虫','数据可视化','吃喝玩乐','社团','单片机'
score_c = np.array([61,50,55,64,82,50,70,40]) #创建一维数组存储数据
score_c = np.concatenate((score_c, [score_c[0]]))
#四、绘制多边形(雷达图) (只允许调用一次plt.polar)
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)
plt.fill(radians,score_a,'violet',radians,score_b,'r',radians,score_b,'b',alpha=0.5)
#八、展示图表
plt.show()
总结
通过 Matplotlib 绘制雷达图可以很好地反映同学的成绩。雷达图可以将多维数据映射到平面上,从而直观地展示数据的分布情况。在雷达图中,每个维度的数据用一个弧线表示,弧线的长度和方向代表了该维度数据的大小和变化趋势。