python绘制雷达图

雷达图定义与应用场景

雷达图(Radar Chart),也被称为蛛网图(Spider Chart)或极坐标图,是一种用于展示多个维度的数据分布的图表。它的主要特点是在一个圆形的坐标系上,通过多个半径相连的数据点来表示不同的数据维度,形成一种类似蜘蛛网的图形。每个维度对应一个角度,而半径的长度表示该维度的数值。

应用场景:
1、比较多个维度: 雷达图适用于比较多个维度的数据,特别是在各个维度上的数据差异较大时,可以直观地看出各维度之间的差异。

2、综合评价: 用于综合评价多个因素对一个目标的影响,例如产品的各个性能指标综合评估。

3、团队能力分析: 在团队管理中,可以使用雷达图来展示团队成员在不同技能维度上的水平,帮助发现团队的整体优势和薄弱之处。

4、市场份额分析: 用于比较不同品牌或产品在市场上的表现,可以清晰地看出各个品牌在不同维度上的竞争优势。

5、个人能力展示: 个人发展规划中,可以使用雷达图来展示个人在各个技能维度上的水平,有助于制定个人提升计划。

总的来说,雷达图是一种直观、可视化的工具,适用于展示多个维度的数据关系,帮助人们更好地理解和分析复杂的多维数据。

示例代码

import matplotlib.pyplot as plt
import numpy as np

# 数据准备
categories = ['Category 1', 'Category 2', 'Category 3', 'Category 4', 'Category 5', 'Category6']
values = [4, 3, 5, 2.5, 4, 1]

# 计算角度
num_categories = len(categories)
angles = np.linspace(0, 2 * np.pi, num_categories, endpoint=False).tolist()

# 绘制雷达图
fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True))
values += values[:1]  # 保持values的长度与angles一致
angles += angles[:1]
ax.fill(angles, values, color='skyblue', alpha=0.25)

# 添加标签和标题
ax.set_thetagrids(np.degrees(angles[:-1]), categories)
ax.set_title('Radar Chart Example')

# 显示图形
plt.show()

结果展示:

在这里插入图片描述
绘制不同月份的降雨数据:

import matplotlib.pyplot as plt
import numpy as np

# 数据示例:每个月份的降雨量
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
rainfall = [50, 45, 60, 80, 100, 120, 130, 110, 90, 70, 60, 55]

# 将12个月份分成360度
angles = np.linspace(0, 2*np.pi, len(months), endpoint=False)

# 将雷达图的第一个点重复以形成一个封闭的图形
rainfall += rainfall[:1]
angles = np.concatenate((angles, [angles[0]]))

# 创建雷达图
fig, ax = plt.subplots(figsize=(8, 8), subplot_kw=dict(polar=True))
ax.fill(angles, rainfall, color='skyblue', alpha=0.5, label='Monthly Rainfall')

# 设置标签
ax.set_thetagrids(angles[:-1] * 180/np.pi, months)
# ax.set_yticklabels([])  # 隐藏半径刻度标签

# 添加图例,并调整位置
ax.legend(loc='upper right', bbox_to_anchor=(1.05, 1.05))

# 添加标题
plt.title('Monthly Rainfall Radar Chart', size=20, y=1.1)

# 显示图形
plt.show()

结果展示:

在这里插入图片描述
绘制两年的降雨数据:

import matplotlib.pyplot as plt
import numpy as np

# 两年的数据示例:每个月份的降雨量
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
rainfall_year1 = [50, 45, 60, 80, 100, 120, 130, 110, 90, 70, 60, 55]
rainfall_year2 = [30, 40, 75, 70, 90, 130, 140, 100, 80, 66, 55, 45]

# 将12个月份分成360度
angles = np.linspace(0, 2*np.pi, len(months), endpoint=False)

# 将雷达图的第一个点重复以形成一个封闭的图形
rainfall_year1 += rainfall_year1[:1]
rainfall_year2 += rainfall_year2[:1]
angles = np.concatenate((angles, [angles[0]]))

# 创建雷达图
fig, ax = plt.subplots(figsize=(10, 10), subplot_kw=dict(polar=True))

# 绘制两年的降雨数据的折线
ax.plot(angles, rainfall_year1, label='Year 1', marker='o')
ax.plot(angles, rainfall_year2, label='Year 2', marker='o')

# 设置标签
ax.set_thetagrids(angles[:-1] * 180/np.pi, months)
ax.set_yticklabels([])  # 隐藏半径刻度标签

# 添加图例
ax.legend(loc='upper right', bbox_to_anchor=(1.05, 1.05))

# 添加标题
plt.title('Monthly Rainfall Radar Chart for Two Years', size=20, y=1.1)

# 显示图形
plt.show()

结果展示:
在这里插入图片描述

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彭博锐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值