matplotlib 雷达图

本文通过画球员能力雷达图,提供matplotlib雷达图模板,后续如果工作中需要使用,直接套用本模板就行。

import numpy as np
from matplotlib import pyplot as plt
#显示中文
plt.rcParams['font.sans-serif']=['Microsoft YaHei']

#能力标签
ability_label=['投射','防守','篮板','组织','爆发力','关键表现']
#设置图形大小
fig=plt.figure(4,figsize=(8,8))
#生成4个子图
ax1=fig.add_subplot(2,2,1,projection='polar')
ax2=fig.add_subplot(2,2,2,projection='polar')
ax3=fig.add_subplot(2,2,3,projection='polar')
ax4=fig.add_subplot(2,2,4,projection='polar')

#伪造的数据
player={'詹姆斯':[88,83,88,90,93,94],
        '杜兰特':[92,81,85,89,90,94],
        '西蒙斯':[73,89,86,88,81,72],
        '奥尼尔':[56,93,97,60,84,88]}
#2pi平均分成6份
theta=np.linspace(0,2*np.pi,6,endpoint=False)
#首尾相连
theta1=np.append(theta,theta[0])
player['詹姆斯']=np.append(player['詹姆斯'],player['詹姆斯'][0])
ax1.plot(theta1,player['詹姆斯'],'red')
#填充
ax1.fill(theta1,player['詹姆斯'],'red',alpha=0.3)
ax1.set_xticks(theta)
ax1.set_xticklabels(ability_label,fontsize=6)
ax1.set_title('詹姆斯',color='red',size=15,y=1.1)
#plt.title('球员能力图')

player['杜兰特']=np.append(player['杜兰特'],player['杜兰特'][0])
ax2.plot(theta1,player['杜兰特'],'blue')
ax2.fill(theta1,player['杜兰特'],'blue',alpha=0.3)
ax2.set_xticks(theta)
ax2.set_xticklabels(ability_label,fontsize=6)
ax2.set_title('杜兰特',color='blue',size=15,y=1.1)

player['西蒙斯']=np.append(player['西蒙斯'],player['西蒙斯'][0])
ax3.plot(theta1,player['西蒙斯'],'green')
ax3.fill(theta1,player['西蒙斯'],'green',alpha=0.3)
ax3.set_xticks(theta)
ax3.set_xticklabels(ability_label,fontsize=6)
ax3.set_title('西蒙斯',color='green',size=15,y=1.05)
ax3.set_yticks([20,40,60,80,100])

player['奥尼尔']=np.append(player['奥尼尔'],player['奥尼尔'][0])
ax4.plot(theta1,player['奥尼尔'],'y')
ax4.fill(theta1,player['奥尼尔'],'y',alpha=0.3)
ax4.set_xticks(theta)
ax4.set_xticklabels(ability_label,fontsize=6)
ax4.set_title('奥尼尔',color='y',size=15,y=1.05)


plt.show()

运行代码最后生成的图形如下:

如果仅想生成1个雷达图,将代码稍作修改即可:

import numpy as np
from matplotlib import pyplot as plt
#显示中文
plt.rcParams['font.sans-serif']=['Microsoft YaHei']

#生成能力标签

ability_label=['投射','防守','篮板','组织','爆发力','关键表现']
fig=plt.figure(4,figsize=(4,4))
#生成4个子图
ax1=fig.add_subplot(1,1,1,projection='polar')


player={'詹姆斯':[88,83,88,90,93,94],
        '杜兰特':[92,81,85,89,90,94],
        '西蒙斯':[73,89,86,88,81,72],
        '奥尼尔':[56,93,97,60,84,88]}
#平均分成6份
theta=np.linspace(0,2*np.pi,6,endpoint=False)
#首尾相连
theta1=np.append(theta,theta[0])
player['詹姆斯']=np.append(player['詹姆斯'],player['詹姆斯'][0])
ax1.plot(theta1,player['詹姆斯'],'red',label='詹姆斯')

player['杜兰特']=np.append(player['杜兰特'],player['杜兰特'][0])
ax1.plot(theta1,player['杜兰特'],'blue',label='杜兰特')


player['西蒙斯']=np.append(player['西蒙斯'],player['西蒙斯'][0])
ax1.plot(theta1,player['西蒙斯'],'green',label='西蒙斯')


player['奥尼尔']=np.append(player['奥尼尔'],player['奥尼尔'][0])
ax1.plot(theta1,player['奥尼尔'],'y',label='奥尼尔')


plt.legend(loc=(0.88,0.82),fontsize=8)

plt.show()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值