Python笔记—matplotlib雷达图

Python笔记—matplotlib雷达图

 

重点 实例代码:

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']

name = ['语文','数学','英语','物理','化学']   #标签
theta = np.linspace(0,2*np.pi,len(name),endpoint=False)    #将圆根据标签的个数等比分
value = np.random.randint(50,100,size=5)   #在60-120内,随机取5个数
theta = np.concatenate((theta,[theta[0]]))  #闭合
value = np.concatenate((value,[value[0]]))  #闭合

ax = plt.subplot(111,projection = 'polar')      #构建图例
ax.plot(theta,value,'m-',lw=1,alpha = 0.75)    #绘图
ax.fill(theta,value,'m',alpha = 0.75)           #填充
ax.set_thetagrids(theta*180/np.pi,name)         #替换标签
ax.set_ylim(0,110)                          #设置极轴的区间
ax.set_theta_zero_location('N')         #设置极轴方向
ax.set_title('木子李-五维图',fontsize = 20)   #添加图描述
plt.show()

 

先了解一下什么是极坐标

极点:以圆的中心作为极点O

极轴:以0°的方向引一条射线极轴Ox,

极径:选定一个长度单位r

极角:以Ox正方向开始计算角度θ(通常取逆时针方向)

极坐标:以极点O作为圆心,以极昼Ox的方向作为起点,以极径r作为半径,画一个以极角θ的扇形,最终圆规脚定的位置就是极坐标M


使用matplotlib画雷达图,也就是画极坐标,使用plt.polar函数画一张空白极地图

import matplotlib.pyplot as plt
plt.polar()
plt.show()

在图中已知的信息是极点(圆心),极轴(0°的方向)

来看一下polar的参数,前面两个特定参数

theta就是我们的极角θ

r就是我们的极径。

我们先在这个图中标记出一个极坐标点

import numpy as np
import matplotlib.pyplot as plt
plt.polar(0.25*np.pi,20,'ro',lw=2)
plt.ylim(0,100)    #设置极轴的上下限
plt.show()

一个π是180度,所以极角是0.25np.pi=90° ,极轴是20 。

用圆规,以圆心作为中心点,以20作为半径,从0°开始,逆时针方向画90°,圆规脚最终停止的点就是极坐标

plt.polar(0.25*np.pi,20,'ro',lw=2)

'ro'绘制的极坐标图形为红色圆点;

lw=2绘制的极坐标图形的宽度为2。

最终效果如下

当给定多个极角和极轴时,

import numpy as np
import matplotlib.pyplot as plt
theta = np.array([0.25,0.75,1,1.5])
r = [20,60,40,80]
plt.polar(theta*np.pi,r,'ro',lw=2)
plt.ylim(0,100)
plt.show()

则在图中绘制出多个点,(0.25*π,20),(0.75*π,60),(1*π,40),(1.5*π,80)

知道极坐标点后,将每个点用线连接起来,那就是雷达图了,将图形绘制样式修改成'ro-

plt.polar(theta*np.pi,r,'ro-',lw=2)

然而发现没有闭合

那就在构造一个极坐标点,和第一个点重叠

import numpy as np
import matplotlib.pyplot as plt
theta = np.array([0.25,0.75,1,1.5,0.25])
r = [20,60,40,80,20]
plt.polar(theta*np.pi,r,'ro-',lw=2)
plt.ylim(0,100)
plt.show()

这样绘制出来的就是一个完成的雷达图,剩下的就是对图形的修整。

Jupyter Notebook是一个交互式的笔记本环境,常用于数据分析和科学计算。在Python中,我们可以使用`matplotlib`库中的`pyplot`模块结合`mpl_toolkits.mplot3d`模块来创建雷达。首先,你需要确保已经安装了这些库,如果没有,可以通过`pip install matplotlib numpy`来安装。 以下是一个简单的步骤来导入数据并绘制雷达: 1. 导入必要的库: ```python import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D ``` 2. 创建数据(这里以简单的二维数据为例,你可以根据实际需要替换): ```python # 假设你有一个包含多个类别和每个类别分数的二维数组 data = np.array([[0.5, 0.6, 0.7, 0.8, 0.9], [0.3, 0.4, 0.5, 0.6, 0.7]]) ``` 3. 初始化雷达: ```python fig = plt.figure() ax = fig.add_subplot(111, projection='polar') ``` 4. 创建雷达: ```python labels = ['A', 'B', 'C', 'D', 'E'] # 类别名称 ax.set_yticklabels(labels) angles = np.linspace(0, 2*np.pi, len(labels), endpoint=False) + (np.pi / 2) # 将0-2π的范围调整为0到360度 ax.plot(angles, data, color='blue', label='Category 1') # 绘制第一条线 ax.plot(angles, data, color='red', label='Category 2') # 绘制第二条线 ``` 5. 添加轴标签和标题,以及例: ```python ax.fill(angles, data, 'b', alpha=0.25) # 隐藏内部填充 ax.fill(angles, data, 'r', alpha=0.25) ax.set_thetagrids(angles * 180/np.pi, labels, fontweight='bold') # 设置角度标签 ax.set_rlabel_position(0) # 移动radar刻度标签到雷达中心 ax.grid(True) ax.legend(loc='upper right') plt.title('Radar Chart Example') ``` 6. 显示表: ```python plt.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值