利用matplotlib库中面向对象API绘制 雷达图

在数据可视化中,雷达图是一种非常有用的图表类型,它可以展示多个维度的数据并将其表示为各个轴上的不同项。Matplotlib是一个强大的Python库,提供了多种绘图方式,包括雷达图。

在本文中,我们将介绍如何使用Matplotlib绘制雷达图。首先,我们需要导入必要的库:

import numpy as np
import matplotlib.pyplot as plt

接下来,准备数据。我们使用一个6维度的数据集作为例子:

plt.rcParams['font.family']='SimHei'
plt.rcParams['axes.unicode_minus']=False
dim_num=6
data=np.array([[0.40,0.32,0.35,0.30,0.30,0.88],
              [0.85,0.35,0.30,0.40,0.40,0.30],
              [0.43,0.89,0.30,0.28,0.22,0.30],
              [0.30,0.25,0.48,0.85,0.45,0.40],
              [0.20,0.38,0.87,0.45,0.32,0.28],
              [0.34,0.31,0.38,0.40,0.92,0.28]])

 接下来,我们需要计算每个维度对应的角度值,以便在雷达图中绘制多边形:

angles=np.linspace(0,2*np.pi,dim_num,endpoint=False)
angles=np.concatenate((angles,[angles[0]]))
data=np.concatenate((data,[data[0]]))

接下来,我们要添加维度标签,并绘制雷达图:

radar_labels=['研究型(I)','艺术型(A)','社会型(S)','企业型(E)','传统型(C)','现实型(R)']
radar_labels=np.concatenate((radar_labels,[radar_labels[0]]))
plt.polar(angles,data)
plt.thetagrids(angles*180/np.pi,labels=radar_labels)

最后,我们将填充多边形以增强可视效果: 

plt.fill(angles,data,alpha=0.25)

代码效果如图所示:                                                                                                               

 下面是一个示例:

题目

  1.  B同学成绩: '数学','英语','线代','爬虫','数据可视化','吃喝玩乐' > 91,88,53,22,38,26

  2.  C同学成绩: '数学','英语','线代','爬虫','数据可视化','吃喝玩乐' > 81,98,85,76,88,66

  3. 把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]]))

第四步:

  1. 定义A同学的成绩数据并将其闭合
  2. 定义B同学的成绩数据并将其闭合
  3. 定义C同学的成绩数据并将其闭合
    score_a = np.array([11, 88, 66, 62, 98, 100])
    score_a = np.concatenate((score_a, [score_a[0]]))
    
    score_b = np.array([91, 88, 53, 22, 38, 26])
    score_b = np.concatenate((score_b, [score_b[0]]))
    
    score_c = np.array([81, 98, 85, 76, 88, 66])
    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)

 第七步:填充雷达图的多边形区域并显示图表

tables = plt.fill(radians, score_a, radians, score_b, radians, score_c, alpha=0.25)

plt.show()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值