matplotlib:热图、箱形图、小提琴图、堆叠面积图、雷达图、子图

简介:在数字化的世界里,从Web、HTTP到App,数据无处不在。但如何将这些复杂的数据转化为直观、易懂的信息?本文将介绍六种数据可视化方法,帮助你更好地理解和呈现数据。

热图 (Heatmap):热图能有效展示用户在网页或应用界面上的点击分布。例如,它可以用来分析用户最常点击的网页区域,帮助优化页面布局和用户体验。

箱形图 (Box Plot):箱形图非常适合分析网站访问时间或服务器响应时间等数据。它能展示数据的中位数、四分位数和异常值,对于发现性能瓶颈或优化响应策略尤为有用。

小提琴图 (Violin Plot):当你需要更深入地了解数据分布时,小提琴图是一个好选择。比如,在分析App的使用时长时,它不仅显示了数据的分布范围,还展示了数据密度。

堆叠面积图 (Stacked Area Chart):堆叠面积图适用于展示网站流量或应用使用量随时间的变化。通过堆叠不同来源的访问量,你可以直观地看到各部分对总流量的贡献。

雷达图 (Radar Chart):雷达图是比较不同产品或服务性能的理想工具。例如,对比不同的Web服务,你可以在多个维度(如响应时间、用户满意度、访问量)上进行全面比较。

历史攻略:

matplotlib:散点图、饼状图

Python:opencv画点、圆、线、多边形、矩形

Python:数据可视化pyechart

python:数据可视化 - 动态

案例源码:

# -*- coding: utf-8 -*-
# time: 2024/01/13 08:18
# file: plt_demo.py
# 公众号: 玩转测试开发
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

# case1 - 热图 (Heatmap) - 模拟数据:页面区域的点击率
click_data = np.random.rand(10, 10)
sns.heatmap(click_data, cmap='viridis')
plt.title('Web Page Click Heatmap')
plt.show()

# case2 - 箱形图 (Box Plot) - 模拟数据:网站每天的响应时间
response_times = np.random.normal(loc=300, scale=50, size=365)

sns.boxplot(response_times)
plt.title('Daily Website Response Times')
plt.xlabel('Response Time (ms)')
plt.show()


# case3 - 小提琴图 (Violin Plot) - 模拟数据:App每日使用时长
usage_times = np.random.normal(loc=120, scale=30, size=1000)

sns.violinplot(data=usage_times)
plt.title('Daily App Usage Times')
plt.xlabel('Usage Time (minutes)')
plt.show()


# case4 - 堆叠面积图 (Stacked Area Chart) - 模拟数据:三个来源的网站流量
source1 = np.random.rand(365)
source2 = np.random.rand(365)
source3 = np.random.rand(365)

plt.stackplot(range(365), source1, source2, source3, labels=['Source 1', 'Source 2', 'Source 3'])
plt.title('Website Traffic by Source')
plt.xlabel('Day of Year')
plt.ylabel('Traffic')
plt.legend(loc='upper left')
plt.show()


# case5 - 雷达图 (Radar Chart) - 模拟数据:Web服务的性能指标
labels = ['Response Time', 'User Satisfaction', 'Feature Richness', 'Ease of Use', 'Reliability']
stats = [3, 5, 2, 4, 5]
stats2 = [4, 3, 3, 2, 5]
stats3 = [2, 4, 5, 5, 3]

# 为雷达图创建角度数组
num_vars = len(labels)
angles = np.linspace(0, 2 * np.pi, num_vars, endpoint=False).tolist()
angles += angles[:1]  # 闭合图形

stats = stats + stats[:1]
stats2 = stats2 + stats2[:1]
stats3 = stats3 + stats3[:1]

fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True))

# 绘制雷达图
ax.plot(angles, stats, 'o-', linewidth=2)
ax.fill(angles, stats, alpha=0.25)
ax.plot(angles, stats2, 'o-', linewidth=2)
ax.fill(angles, stats2, alpha=0.25)
ax.plot(angles, stats3, 'o-', linewidth=2)
ax.fill(angles, stats3, alpha=0.25)

# 设置角度标签
ax.set_thetagrids(np.degrees(angles[:-1]), labels)

plt.title('Web Service Performance Comparison')
plt.show()


# case6 - 子图数据:模拟Web和App的用户行为数据
days = np.arange(1, 31)
web_traffic = np.random.randint(100, 1000, size=30)
app_traffic = np.random.randint(100, 1000, size=30)
web_clicks = np.random.randint(10, 100, size=30)
app_clicks = np.random.randint(10, 100, size=30)

# 创建子图布局
fig, axs = plt.subplots(2, 2, figsize=(12, 10))

# 第一个子图:Web流量
axs[0, 0].plot(days, web_traffic, marker='o', color='tab:blue')
axs[0, 0].set_title('Daily Web Traffic')
axs[0, 0].set_xlabel('Day of the Month')
axs[0, 0].set_ylabel('Number of Users')

# 第二个子图:App流量
axs[0, 1].plot(days, app_traffic, marker='s', color='tab:green')
axs[0, 1].set_title('Daily App Traffic')
axs[0, 1].set_xlabel('Day of the Month')
axs[0, 1].set_ylabel('Number of Users')

# 第三个子图:Web点击量
axs[1, 0].bar(days, web_clicks, color='tab:orange')
axs[1, 0].set_title('Daily Web Clicks')
axs[1, 0].set_xlabel('Day of the Month')
axs[1, 0].set_ylabel('Number of Clicks')

# 第四个子图:App点击量
axs[1, 1].bar(days, app_clicks, color='tab:red')
axs[1, 1].set_title('Daily App Clicks')
axs[1, 1].set_xlabel('Day of the Month')
axs[1, 1].set_ylabel('Number of Clicks')

# 调整布局
plt.tight_layout()
plt.show()

运行结果:

图片

结论:选择合适的可视化方法不仅能帮助我们更快地理解数据,还能让我们的分析结果更容易被他人理解。无论是数据分析师、产品经理还是营销人员,掌握这些技巧都将使你在数据洪流中游刃有余。欢迎分享你的数据可视化经验,一起探讨如何让数据说话。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/320328.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WorkPlus企业内部即时通信新选择,打造高效协作新格局

在企业内部,快速、高效的沟通与协作是推动工作进程的关键。而即时通信工具成为了企业内部沟通的重要工具。作为一款优秀的企业内部即时通信工具,WorkPlus通过其出色的性能和独特的功能,为企业打造高效协作的新格局。 为什么选择WorkPlus作为企…

详解Matlab深度学习进行波形分割

🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 🔐#### 防伪水印——左手の明天 ####🔐 💗 大家…

强化学习应用(三):基于Q-learning算法的无人车配送路径规划(提供Python代码)

一、Q-learning算法介绍 Q-learning是一种强化学习算法,用于解决基于环境的决策问题。它通过学习一个Q-table来指导智能体在不同状态下采取最优动作。下面是Q-learning算法的基本步骤: 1. 定义环境:确定问题的状态和动作空间,并…

逆变器之推挽谐振

首先把前级推挽电路分成几个模块:方波发生器、谐振LC、整流滤波以及负载。框图如下图所示: 分析前提:稳态 在推挽电路正常工作中,输入电压恒定、输出电流电压也恒定(电源处于稳定的工作状态中) 方波发生器…

Objective-C使用UISwitch控制UITextField显示明文或密文

1.xib中设计 2.关联控件 3.使用代码控制开关与TextField显示模式 4.开关控件UISwitch点击事件实现,点击时根据状态切换TextField显示模式 5.显示效果:

【Qt】QThread moveTothread-多线程的两种实现方法

一、如何理解多线程 二、实现多线程的两种方式(面向应用) 2.1 继承 QThread 的类 2.2 (推荐这种方式)函数 moveTothread() 三、多线程的释放问题(善后工作) 多线程的两种实现方法 一、如何理解多线程二、实现多线程的两种方式&…

文件操作(二)

͟͟͞͞🏀前言上一篇我们加们讲了什么是文件,为什么使用文件,以及流的概念。我们继续接上一篇来继续讲解我们的文件操作,这一篇将会详细的讲如何对文件进行读写。 目录 🚀一.文件的顺序读写 1.fgetc和fputc 2.fget…

oracle—IMU机制

正常的情况下,当事务需要回滚块的时候,是去undo表空间找 现在是在sharepool中分一个IMUbuffer,将所有的回滚信息写入。直接就可以从中取。减少了物理IO 同时这个过程也产生redo,直接就是图中红色的,不防止崩溃 优点 1…

Java21 + SpringBoot3集成WebSocket

文章目录 前言相关技术简介什么是WebSocketWebSocket的原理WebSocket与HTTP协议的关系WebSocket优点WebSocket应用场景 实现方式1. 添加maven依赖2. 添加WebSocket配置类,定义ServerEndpointExporter Bean3. 定义WebSocket Endpoint4. 前端创建WebSocket对象 总结 前…

Java 树形结构数据生成导出excel文件V2

** >> 相对于V1版本&#xff0c;优化了代码逻辑&#xff0c;合理使用递归计算树数据的坐标 << ** 1、效果 2、使用方法 import com.alibaba.fastjson.JSONArray; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Workboo…

Shiro框架:Shiro登录认证流程源码解析

目录 1.用户登录认证流程 1.1 生成认证Token 1.2 用户登录认证 1.2.1 SecurityManager login流程解析 1.2.1.1 authenticate方法进行登录认证 1.2.1.1.1 单Realm认证 1.2.1.2 认证通过后创建登录用户对象 1.2.1.2.1 复制SubjectContext 1.2.1.2.2 对subjectContext设…

【如何在 GitHub上面找项目】【转载】

很多的小伙伴&#xff0c;经常会有这样的困惑&#xff0c;我看了很多技术的学习文档、书籍、甚至视频&#xff0c;我想动手实践&#xff0c;于是我打开了GitHub&#xff0c;想找个开源项目&#xff0c;进行学习&#xff0c;获取项目实战经验。这个时候很多小伙伴就会面临这样的…

【数据结构 | 直接选择排序】

直接选择排序 基本思路直接插入排序SelectSort 基本思路 直接插入排序&#xff08;StraightInsertionSort&#xff09;的基本操作是将一个记录插入到已经排好序的有序表中&#xff0c;从而得到一个新的、记录数增1的有序表。 我们可以同时从数组的头部和尾部同时进行排序工作…

Pandoc:markdown转word

简介&#xff1a;Pandoc是由John MacFarlane开发的标记语言转换工具&#xff0c;可实现不同标记语言间的格式转换&#xff0c;堪称该领域中的“瑞士军刀”。Pandoc使用Haskell语言编写&#xff0c;以命令行形式实现与用户的交互&#xff0c;可支持多种操作系统&#xff1b;Pand…

IP-Adapter:用于文本到图像扩散模型的文本兼容图像提示适配器

文章目录 一、IP-Adapter简介二、IP-Adapter与img2img的区分&#xff08;一&#xff09;结构上的区别&#xff08;二&#xff09;流程上的区别&#xff08;三&#xff09;输出上的区别&#xff08;四&#xff09;原理上的区别 三、IP-Adapter的网络架构&#xff08;一&#xff…

自定义C#类库(.dll文件)

环境配置 操作系统&#xff1a;Windows 10 开发工具&#xff1a;Visual Studio 2022 .Net桌面开发环境&#xff1a; 开发步骤 &#xff08;一&#xff09;创建C#类库项目 &#xff08;二&#xff09;配置项目名称和项目路径 &#xff08;三&#xff09;选择所使用的框架&a…

ES数据聚合

1.数据聚合 聚合&#xff08;aggregations&#xff09;可以让我们极其方便的实现对数据的统计、分析、运算。例如&#xff1a; 什么品牌的手机最受欢迎&#xff1f; 这些手机的平均价格、最高价格、最低价格&#xff1f; 这些手机每月的销售情况如何&#xff1f; 实现这些…

PDF 文档解除密码

PDF 文档解除密码 1. 文件 -> 文档属性 -> 安全 -> 文档限制摘要2. PDF365References 1. 文件 -> 文档属性 -> 安全 -> 文档限制摘要 密码保护《算法设计与分析基础_第3版.pdf》 2. PDF365 https://www.pdf365.cn/ 免费功能 -> PDF 去密码 开始去除 Re…

PVE虚拟机配置文件恢复

一、pve 创建的虚拟机的配置文件位置 在宿主机的 /etc/pve/qemu-server&#xff0c;这里有创建虚拟机的相关硬件信息。 rootpve1:/etc/pve/qemu-server# pwd /etc/pve/qemu-server二、故障现象 在命令行执行qm list不显示虚拟机&#xff0c;查看 宿主机的 /etc/pve/qemu-ser…

【算法】Java-二叉树的右视图(BFS、DFS两种解法)

题目要求&#xff1a; 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4]示例 2: 输入: [1,null,3] 输出: [1,3]示例 3: 输入…