返回顶部
首页 > 资讯 > 后端开发 > Python >【100天精通Python】Day70:Python可视化_绘制不同类型的雷达图,示例+代码
  • 149
分享到

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

pythonmatplotlib开发语言 2023-10-18 17:10:51 149人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录 1. 基本雷达图 2. 多组数据的雷达图  3 交互式雷达地图 4 动态雷达图 0 雷达图概述         雷达图(Radar Chart),也被称为蜘蛛图(Spider Chart)或星型图,是一种用于可视化多维数据的图表类型

目录

1. 基本雷达图

2. 多组数据的雷达图

 3 交互式雷达地图

4 动态雷达图


0 雷达图概述

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

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

特点

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

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

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

用途

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

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

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

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

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

1. 基本雷达图

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

import matplotlib.pyplot as pltimport 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 pltimport 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 pltimport 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()

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

来源地址:https://blog.csdn.net/qq_35831906/article/details/133822024

--结束END--

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

本文链接: https://lsjlt.com/news/431486.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作