使用matplotlib通过面向对象API绘制雷达图

代码:

# 导入所需库
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])  # A的得分数据
score_a = np.concatenate((score_a, [score_a[0]]))  # 将首尾相连,形成闭合的多边形

score_b = np.array([91, 88, 83, 72, 78, 26])  # B的得分数据
score_b = np.concatenate((score_b, [score_b[0]]))  # 将首尾相连,形成闭合的多边形

score_c = np.array([81, 78, 85, 76, 74, 36])  # C的得分数据
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='b', alpha=0.1)
plt.fill(radians, score_b, color='g', alpha=0.2)
plt.fill(radians, score_c, color='r', alpha=0.3)

# 显示图形
plt.show()

下面是对代码的解释:

  1. 导入需要的库:numpy用于数值计算,matplotlib.pyplot用于绘图。
  2. 设置中文字体和正常显示负号,确保图表中的中文和负号显示正常。
  3. 定义变量dim_num表示维度数量,这里为6。
  4. 使用np.linspace函数计算出各个维度的角度,生成一个等差数列,范围是0到2π,将其存储在radians数组中。
  5. 通过np.concatenate函数将radians数组首尾相连,形成闭合的多边形。
  6. 分别定义A、B、C三个维度的得分数据,并使用np.concatenate函数将每个数组首尾相连,形成闭合的多边形。
  7. 使用plt.polar函数绘制极坐标雷达图,传入参数为radians和相应的分数数组,可以同时绘制多个数据集的雷达图。
  8. 定义radar_labels数组,存储各个维度的标签,使用np.concatenate函数将标签数组首尾相连。
  9. 将角度由弧度转换为角度,用于设置刻度标签。
  10. 使用plt.thetagrids函数设置极坐标图的刻度标签,传入参数为角度和标签数组。
  11. 使用plt.fill函数绘制填充区域,表示得分范围。传入参数为radians和对应的分数数组,可以为不同的数据集设置不同的颜色和透明度。
  12. 使用plt.show()显示绘制的图形。

综上所述,该代码通过极坐标图展示了A、B、C三个数据集在不同维度上的得分情况,并使用填充区域表示得分范围。

输出:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值