通过matplotlib绘制雷达图反映同学成绩

雷达图中的每个维度都用一个弧线表示,弧线的长度和方向代表了该维度上成绩的大小和变化趋势。

目录

前言

一、NumPy导入库

二、使用步骤

二、设置中文

三、准备三名同学各科目成绩数据

四、绘制多边形(雷达图)

五、设置维度标签

六、设置极坐标的标签

七、填充多边形

八、展示图表

九:运行结果图形展示:

十、全部运行代码:

总结


前言

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 绘制雷达图可以很好地反映同学的成绩。雷达图可以将多维数据映射到平面上,从而直观地展示数据的分布情况。在雷达图中,每个维度的数据用一个弧线表示,弧线的长度和方向代表了该维度数据的大小和变化趋势。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值