当前位置: 首页 > news >正文

【100天精通Python】Day70:Python可视化_绘制不同类型的雷达图,示例+代码

目录

1. 基本雷达图

2. 多组数据的雷达图

 3 交互式雷达地图

4 动态雷达图


0 雷达图概述

        雷达图(Radar Chart),也被称为蜘蛛图(Spider Chart)或星型图,是一种用于可视化多维数据的图表类型。雷达图通常由一个多边形或星形的图形构成,每个顶点代表数据的不同维度,而多边形的边缘表示数据的数值。每个维度通常位于雷达图的边缘,而数据值沿着半径方向绘制。

以下是雷达图的一般特点和用途:

特点

  1. 多维度表示:雷达图允许同时表示多个维度的数据,每个维度对应于雷达图的一个轴。这使得用户可以直观地比较不同维度的数据。

  2. 相对比例:数据通常以相对比例的方式表示,因此用户可以看到各维度之间的相对关系。这使得雷达图在比较不同数据集的相对强度时非常有用。

  3. 多数据集对比:雷达图适用于比较多个数据集之间的差异。通过在同一个雷达图上绘制多个多边形,用户可以清晰地看到不同数据集的表现。

用途

  1. 绩效评估:雷达图常用于评估个体或团队在多个维度上的绩效。例如,可以使用雷达图来评估一名运动员在速度、力量、灵活性等维度上的表现。

  2. 决策支持:在决策过程中,雷达图可以帮助决策者比较不同选项在多个关键因素上的优劣。这有助于做出综合决策。

  3. 产品特性对比:在产品设计和开发中,雷达图可以用来比较不同产品特性在用户需求、成本、复杂性等方面的差异。

  4. 风险分析:雷达图可用于分析风险因素在不同维度上的潜在影响。这对于制定风险管理策略很有帮助。

        总之,雷达图是一种多维数据可视化工具,它可以帮助用户更好地理解和比较数据的多个方面,从而支持决策和分析。

1. 基本雷达图

        基本雷达图用于可视化多个维度的数据。这种图通常具有一个中心点,每个维度的数据以线条或面积表示。基本雷达图用于可视化单个数据集的不同类别或维度。

import matplotlib.pyplot as plt
import numpy as np# 数据准备
categories = ['Category 1', 'Category 2', 'Category 3', 'Category 4', 'Category 5']
values = [4, 2, 5, 1, 3]# 标准化数据
normalized_values = [x / max(values) for x in values]# 创建雷达图
angles = np.linspace(0, 2 * np.pi, len(categories), endpoint=False).tolist()
normalized_values += normalized_values[:1]
angles += angles[:1]# 绘制雷达图
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.fill(angles, normalized_values, 'b', alpha=0.1)# 设置轴标签
ax.set_xticks(angles[:-1])
ax.set_xticklabels(categories)# 添加标题
plt.title("Filled Radar Chart")plt.show()

        在此示例中,我们首先准备了数据并对其进行了标准化。然后,我们创建了雷达图,并使用fill函数填充了雷达图中的区域,以强调每个维度的值。最后,我们添加了轴标签和标题,以提高图表的可读性。 

2. 多组数据的雷达图

这个示例展示如何绘制多组数据的雷达图,以便比较它们。

import matplotlib.pyplot as plt
import numpy as npcategories = ['Category 1', 'Category 2', 'Category 3', 'Category 4', 'Category 5']
values1 = [4, 2, 5, 1, 3]
values2 = [3, 4, 2, 3, 5]angles = np.linspace(0, 2 * np.pi, len(categories), endpoint=False).tolist()
values1 += values1[:1]
values2 += values2[:1]
angles += angles[:1]fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.fill(angles, values1, 'b', alpha=0.1, label='Dataset 1')
ax.fill(angles, values2, 'r', alpha=0.1, label='Dataset 2')
ax.set_xticks(angles[:-1])
ax.set_xticklabels(categories)
ax.legend()
plt.show()

 3 交互式雷达地图

交互式雷达地图允许用户与地图进行互动,例如缩放、平移、悬停在数据点上查看详细信息等。Plotly是一个流行的Python库,用于创建交互式图表,包括雷达图。

首先,确保你已经安装了Plotly库。如果没有安装,可以使用以下命令进行安装:

pip install plotly

绘制交互式雷达地图:

import plotly.express as px# 示例数据
data = {"City": ["New York", "Los Angeles", "Chicago", "Houston", "Miami"],"Temperature (°C)": [18, 24, 12, 27, 29],"Humidity (%)": [75, 62, 58, 84, 76]
}# 创建交互式雷达地图
fig = px.line_polar(data, r="Temperature (°C)", theta="City", line_close=True, range_r=[0, 30])
fig.update_traces(fill='toself')# 添加湿度数据
fig.add_trace(px.line_polar(data, r="Humidity (%)", theta="City", line_close=True, range_r=[0, 100]).data[0])# 设置布局
fig.update_layout(polar=dict(radialaxis=dict(visible=True,range=[0, 100])),showlegend=True
)# 显示交互式雷达地图
fig.show()

结果在浏览器中展示如下:

在这个示例中,我们使用plotly.express创建了一个交互式雷达地图。我们首先定义了示例数据,包括城市、平均气温和湿度。然后,我们使用px.line_polar创建了一个雷达图,显示平均气温数据,同时使用px.line_polar添加了湿度数据。最后,我们设置了布局选项,并使用fig.show()显示交互式雷达地图。 

动态雷达图

用于跟踪数据随时间变化的情况。每个时间点都可以表示为一个雷达图,形成时间序列。

import matplotlib.pyplot as plt
import numpy as np# 数据准备
categories = ['Category 1', 'Category 2', 'Category 3', 'Category 4', 'Category 5']
time_points = ['Time 1', 'Time 2', 'Time 3', 'Time 4', 'Time 5']# 模拟不同时间点的数据,确保每个时间点的数据长度相同
data = np.random.randint(1, 10, size=(len(time_points), len(categories)))# 创建雷达图
fig, axs = plt.subplots(1, len(time_points), subplot_kw={'projection': 'polar'}, figsize=(12, 4))for i, ax in enumerate(axs):values = data[i]angles = np.linspace(0, 2 * np.pi, len(categories), endpoint=False).tolist()values = np.append(values, values[0])  # 为了保证维度一致,添加一个起始点angles = np.append(angles, angles[0])  # 添加一个起始角度ax.fill(angles, values, 'b', alpha=0.1)ax.set_xticks(angles[:-1])ax.set_xticklabels(categories)ax.set_title(time_points[i])plt.tight_layout()
plt.show()

         在此示例中,我们创建了一个包含不同时间点数据的雷达图时间序列。每个时间点的数据以不同的颜色表示,并排列在一个图表中,以显示数据随时间的变化。这是一个简单的静态示例,你可以使用动画库或交互式可视化工具库来创建动态雷达图,以更好地表示数据的时间演变。

http://www.lryc.cn/news/192172.html

相关文章:

  • KY258 日期累加
  • 基于CodeFormer实现图片模糊变清晰,去除马赛克等效果
  • Docker【部署 05】docker使用tensorflow-gpu安装及调用GPU踩坑记录
  • 前后端分离中,前端请求和后端接收请求格式总结
  • pytorch的基本运算,是不是共享了内存,有没有维度变化
  • Visual Studio 2022新建项目时没有ASP.NET项目
  • nuiapp项目实战:导航栏动态切换效果实践案例树
  • 【机器学习】集成学习(以随机森林为例)
  • 主机jvisualvm连接到tomcat服务器查看jvm状态
  • uniapp 自定义tabbar页面不刷新
  • 3.1 SQL概述
  • xray安装与bp组合使用-被动扫描
  • Java 中Maven 和 ANT
  • Flutter通过Pigeon插件与Android同步异步交互
  • GTW验厂是什么?GTW验厂评级分类
  • CVE-2017-12615 Tomcat远程命令执行漏洞
  • 灿芯股份将上会:计划募资6亿元,董事长、总经理均为外籍
  • Spring Cloud Gateway 搭建网关
  • ETL数据转换方式有哪些
  • CVE-2017-15715 apache换行解析文件上传漏洞
  • 振弦采集仪应用水坝安全监测的方案
  • 【Java】查找jdk步骤
  • 【mysql】Mysql自定义变量 @rownum使用
  • 命令行启动android模拟器
  • Three.js如何计算3DObject的2D包围框?
  • 【LeetCode热题100】--347.前K个高频元素
  • 解决服务器80端口无法连接的办法
  • 040:mapboxGL鼠标hover更换选中feature颜色
  • 【C++心愿便利店】No.8---C++之重识类和对象
  • 【AI视野·今日NLP 自然语言处理论文速览 第五十二期】Wed, 11 Oct 2023