matplotlib绘制雷达图

雷达图 

使用polar()绘制直方图。polar()函数的语法格式如下:

polar ( * args , ** kwargs )

调用: polar(theta, r, **kwargs)支持多个thetar参数,格式字符串,如 plot.

常用参数:

theta : 表示每个数据点所在射线与极径的夹角

r : 表示每个数据点到原点的距离

导入模块

import numpy as np
import matplotlib.pyplot as plt

作业要求: 

需求一: 请把B同学和C同学的成绩用雷达图展示在同一个绘图区域,并填充不同颜色和透明度
      (只允许调用一次plt.polar和plt.fill)
A同学: '数学','英语','线代','爬虫','数据可视化','吃喝玩乐'  --->   41,38,36,62,68,100
B同学:'数学','英语','线代','爬虫','数据可视化','吃喝玩乐'  --->   91,88,83,72,78,26
C同学:'数学','英语','线代','爬虫','数据可视化','吃喝玩乐'  --->   81,78,85,76,74,36
radar_labels = ['数学','英语','线代','爬虫','数据可视化','吃喝玩乐'] 
value  = np.array([[41,38,36,62,68,100],
                   [91,88,83,72,78,26],
                   [81,78,85,76,74,36]])

 用于正常显示符号

plt.rcParams['axes.unicode_minus'] = False

 设置每个数据点的显示位置,在雷达图上用角度表示

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

绘图

fig=plt.figure(facecolor='white')
index0 = 0
subject_label = ['A同学','B同学','C同学']
for values in [value[0,:],value[1,:],value[2,:]]:

拼接数据首尾,使图形中线条封闭

 values=np.concatenate((values,[values[0]]))

设置为极坐标格式

ax = fig.add_subplot(111, polar=True)

绘制折线图

ax.plot(angles, values, 'o-', linewidth=1,label=subject_label[index0])

填充颜色

 ax.fill(angles, values, alpha=0.25)

设置图标上的角度划分刻度,为每个数据点处添加标签

ax.set_thetagrids(angles * 180/np.pi, feature)

设置雷达图的范围

ax.set_ylim(0,100)
index0 = index0 + 1

添加标题

plt.title('不同学生成绩分布雷达图')
plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=1,frameon=False)

添加网格线

ax.grid(True)

展示图表

plt.show()

完整代码如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值