python绘制雷达图

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()

结果展示:

相关推荐

[耳机]北京出拜亚DT880 250欧 给力的价格
约彩365彩票官方app下载安卓

[耳机]北京出拜亚DT880 250欧 给力的价格

📅 06-28 👁️ 7210
挑葫芦“5项标准”盘葫芦“5项要求”
365直播是什么

挑葫芦“5项标准”盘葫芦“5项要求”

📅 07-19 👁️ 6067
98年世界杯的问题
365直播是什么

98年世界杯的问题

📅 07-02 👁️ 7451
[逻辑推理]仔细看图然后答题
365直播是什么

[逻辑推理]仔细看图然后答题

📅 07-19 👁️ 2383
王牌进化
365直播是什么

王牌进化

📅 06-29 👁️ 1620
镉的理化性质及危险特性(SDS\MSDS)表
365正规网站是多少

镉的理化性质及危险特性(SDS\MSDS)表

📅 07-03 👁️ 6988
海康监控主机无法登录后台解决办法
约彩365彩票官方app下载安卓

海康监控主机无法登录后台解决办法

📅 06-30 👁️ 6627
2018世界杯 F组韩国VS墨西哥 第2集 【跨界聊球】贝拉点球破门首开记录 埃尔南德斯扣射进球扩大比分  韩国1
迫的五笔怎么打?
365直播是什么

迫的五笔怎么打?

📅 06-27 👁️ 1947