【Python】数据可视化之分类图

目录

条形图

箱形图

散点图

分簇散点图

小提琴

分簇小提琴


条形图

条形图是一种直观的图表形式,它通过不同长度的矩形条(即“条形”)来展示数值变量的中心趋势估计值,其中每个矩形的高度直接对应于该组数据的某个中心量度(如均值、中位数等)。此外,为了向观众传达关于这些中心趋势估计值可靠性的额外信息,条形图上常附有误差线。这些误差线提供了关于估计值周围不确定性的视觉指示,帮助理解数据的变异性或抽样误差可能如何影响这些中心趋势的估计。

也可以表示标准误差(Standard Error, SE)、置信区间(Confidence Interval, CI)或其他统计度量,它们均反映了估计值的不确定性范围。例如,一个95%的置信区间误差线会展示一个范围,该范围在多次重复相同研究的情况下,有95%的机会包含真实的中心趋势值。这样的表示不仅展示了数据的中心位置,还通过误差线直观地揭示了围绕这一中心位置的不确定性程度。

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
crashes = sns.load_dataset("car_crashes").sort_values("total", ascending=False)
# 初始化画布大小
f, ax = plt.subplots(figsize=(15, 15))
# 绘出总的交通事故
sns.set_color_codes("pastel")
# 绘制条形图,x轴为alcohol,y轴为abbrev,数据为crashes,标签为Total,颜色为r
sns.barplot(x="total", y="abbrev", data=crashes, label="Total", color="r")
# 设置颜色代码
sns.set_color_codes("bright")
# 绘制条形图,x轴为alcohol,y轴为abbrev,数据为crashes,标签为Alcohol-involved,颜色为r
sns.barplot(x="alcohol", y="abbrev", data=crashes, label="Alcohol-involved", color="r")
# 设置图例,每行2列,位置在右下角,边框显示
ax.legend(ncol=2, loc="lower right", frameon=True)
# 设置x轴范围,y轴标签为空,x轴标签为“Automobile collisions per billion miles”
ax.set(xlim=(0, 24), ylabel="",xlabel="Automobile collisions per billion miles")

箱形图

箱形图,亦称为盒须图、盒式图或箱线图,是一种在统计学和数据可视化领域广泛应用的图形工具,用于直观地展示和比较一组或多组数据的分布特征。通过紧凑而富有信息量的方式,将数据的最大值、最小值、中位数、以及上四分位数和下四分位数等重要统计量呈现在简洁的图形之中。广泛应用于各种领域,如质量控制、经济学、生物学、医学研究等,帮助研究人员和分析师快速识别数据中的模式、异常值和分布特征,为进一步的统计分析和决策制定提供有力支持。

  • 中位数(Median):箱形图中的中心线代表数据集的中位数,即将数据集排序后位于中间的数值,反映了数据的中心趋势。

  • 四分位数(Quartiles)

    • 下四分位数(Q1):位于数据集25%处的数值,即至少有25%的数据小于或等于这个值。
    • 上四分位数(Q3):位于数据集75%处的数值,即至少有75%的数据小于或等于这个值。
      四分位数与中位数一起,将数据集分为四个等量的部分,反映了数据的分布范围。
  • 箱体(Box):由下四分位数和上四分位数构成的矩形区域,表示数据的主要集中范围。箱体的高度反映了数据的中间50%的离散程度。

  • 须(Whiskers):从箱体的上下两端延伸出的线段,通常表示数据的最小值和最大值(或根据特定规则调整后的值,如使用1.5倍四分位距来排除异常值)。须的长度显示了数据分布的极端值范围。

  • 异常值(Outliers):通常定义为超出须范围的数据点,以单独的点或符号表示,它们可能由于测量错误、数据录入错误或极端事件而产生。

# 加载tips数据集
tips = sns.load_dataset("tips")
# 绘制嵌套的箱线图,按日期和时间显示账单
# x轴为日期,y轴为账单,hue为是否吸烟,颜色分别为m和g
sns.boxplot(x="day", y="total_bill", hue="smoker", palette=["r", "b"], data=tips)
# 去除图表的边框,偏移量为10,去除多余的边框
sns.despine(offset=10, trim=True)

散点图

点图作为一种数据可视化工具,核心在于展示数值变量在不同分类级别上的中心趋势估计。通过点的位置,能够直观地把握各分类下的数值分布情况。此外,点图还巧妙地运用误差线来标示这些中心趋势估计的不确定性范围,提供了更为全面的数据解读视角。与条形图相比,点图在聚焦于分类变量不同级别之间的比较时往往更具优势。它们不仅能够清晰地展示各分类下的数值水平,还能够在有限的空间内容纳更多的信息点,适合于展示较为复杂的数据集。

点图在展现交互作用方面表现出色。它们能够直观地揭示一个分类变量的各个层次如何随着第二个分类变量的变化而变化,这种变化关系通过点图中点的位置及其连线得以生动展现。特别是当使用不同色调来区分不同组别时,连接相同色调等级点的线条能够清晰地显示出斜率的变化,从而更容易地捕捉到不同组别间交互作用的微妙差异。

import pandas as pd
import seaborn as sns
# 设置图形风格
sns.set(style="ticks")
# 加载iris数据集
iris = sns.load_dataset("iris")
# 将数据格式调整
iris = pd.melt(iris, "species", var_name="measurement")
# 初始化图形
f, ax = plt.subplots()
# 移除图形的底部和左侧的边框
sns.despine(bottom=True, left=True)
# 绘制条形图
# 使用seaborn库中的stripplot函数绘制散点图
# x参数指定x轴的数据,y参数指定y轴的数据,hue参数指定颜色映射,data参数指定数据集
# dodge参数指定是否在x轴上分散,jitter参数指定是否在y轴上抖动,alpha参数指定透明度,zorder参数指定绘图顺序
sns.stripplot(x="value", y="measurement", hue="species",data=iris, dodge=True, jitter=True,alpha=.5, zorder=1)
# 显示条件平均数
# 使用seaborn库中的pointplot函数绘制点图
# x参数指定x轴的数据,y参数指定y轴的数据,hue参数指定颜色映射,data参数指定数据集
# dodge参数指定点之间的间隔,join参数指定是否连接点,palette参数指定颜色调色板
# markers参数指定点的形状,scale参数指定点的大小,ci参数指定置信区间
sns.pointplot(x="value", y="measurement", hue="species",data=iris, dodge=.532, join=False, palette="dark",markers="s", scale=1, ci=True)
# 图例设置
handles, labels = ax.get_legend_handles_labels()
# 设置图例的位置和样式
# 添加图例,handles为图例的句柄,labels为图例的标签,title为图例的标题
# handletextpad为图例文本与句柄之间的距离,columnspacing为图例列之间的距离
# loc为图例的位置,ncol为图例的列数,frameon为是否显示图例的边框
ax.legend(handles[3:], labels[3:], title="species",handletextpad=0.05, columnspacing=0.05,loc="upper left", ncol=1, frameon=True)

分簇散点图

分簇散点图Swarmplot,是一种用于展示分类变量和数值变量之间关系的数据可视化图表类型,特别适用于探索多个分类级别下数据的分布情况,简单说就是数据点不重叠的分类散点图swarmplot()作为可视化的工具,不仅能够单独使用来展现数据的分类特征,还常作为箱形图(Boxplot)或小提琴图(Violin Plot)的补充手段。箱形图虽然能概括数据的四分位数范围,但无法展示所有具体数据点;小提琴图则通过密度估计展示了数据分布的形状,但在数据点较少时可能不够直观。而Swarmplot则巧妙地填补了这一空白,它直接展示所有数据点,同时通过其独特的布局方式保留了数据的基本分布特征,使得用户能够同时获得宏观与微观的数据洞察。

import pandas as pd
import seaborn as sns
# 设置绘图风格和调色板
sns.set(style="whitegrid", palette="bright")
# 加载数据集
iris = sns.load_dataset("iris")
# 处理数据集,将species列作为索引,var_name为measurement
iris = pd.melt(iris, "species", var_name="measurement")
# 绘制分类散点图,x轴为measurement,y轴为value,hue为species,调色板为b、c、y
sns.swarmplot(x="measurement", y="value", hue="species", palette=["b", "c", "y"], data=iris)

小提琴

小提琴图(Violin Plot)是一种高级的数据可视化工具,它巧妙地展示了定量数据在单个或多个分类变量不同层级上的分布情况,并允许对这些分布进行直观的比较。与箱形图(Box-plot)不同,小提琴图不仅仅依赖于几个关键统计量(如中位数、四分位数)来描绘数据分布,而是采用了更为细腻的方法——核密度估计(Kernel Density Estimation, KDE),来描绘数据的潜在分布形态。

核密度估计是一种非参数方法,用于估计随机变量的概率密度函数。在小提琴图中,这一技术被用来绘制每个分类层级下数据的“密度轮廓”,即数据点在不同值域上的相对频率或概率分布。这种表示方式不仅展示了数据的中心趋势(如中位数附近的密集区域),还揭示了数据的整体形状、对称性、多峰性以及可能的异常值区域,从而提供了比箱形图更为丰富和细致的数据分布信息。

小提琴图的优势在于其能够同时展示数据的分布形态和密度信息,使得观察者能够更全面地理解数据在不同分类层级下的变异性和相似性。此外,小提琴图还常常与箱形图结合使用,即在每个小提琴图内部绘制对应的箱形图组件(如中位数线、四分位数范围等),以提供额外的统计量参考和异常值标识。

import numpy as np
import seaborn as sns
# 生成模拟数据集
# 创建一个随机数生成器,种子为0
rs = np.random.RandomState(0)
# 定义样本数量和特征数量
n, p = 40, 8
# 生成一个40行8列的随机正态分布矩阵,均值为0,标准差为2
d = rs.normal(0, 2, (n, p))
# 对矩阵中的每个元素进行操作,加上-5乘以特征索引再加10
d += np.log(np.arange(1, p + 1)) * -5 + 10
# 使用cubehelix获得自定义的顺序调色板
pal = sns.cubehelix_palette(p, rot=-.8, dark=.6)
# 使用小提琴图和圆点展现每种分布
sns.violinplot(data=d, palette=pal, inner="point")

分簇小提琴

分簇小提琴图(Clustered Violin Plot)是一种特殊的小提琴图变种,它结合了小提琴图的分布展示能力与分簇图的比较功能,用于在同一图表中比较多个组别或分类变量下的数据分布情况。其通过并排展示多个小提琴图(每个小提琴代表一个组别或类别),来同时比较不同组别下定量数据的分布形态和密度。每个小提琴的内部结构与标准小提琴图相同,包括核密度估计曲线、可能的箱线图元素(如中位数、四分位数等),以及表示数据密度的宽度变化。

# 导入seaborn库
import seaborn as sns
# 加载tips数据集
tips = sns.load_dataset("tips")
# 绘制一个嵌套的小提琴图,并拆分小提琴以便于比较
# 使用seaborn库绘制小提琴图
# x轴为day,y轴为total_bill,根据smoker进行分组
# split参数为True,表示将不同组的数据分开绘制
# inner参数为"quart",表示在小提琴内部绘制四分位数
# palette参数为字典,表示不同组的数据使用不同的颜色
# data参数为tips,表示使用tips数据集
sns.violinplot(x="day", y="total_bill", hue="smoker",split=True, inner="quart",palette={"Yes": "g", "No": "y"},data=tips)
# 去除左边框
sns.despine(left=True)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ模型详解与常见问题

项目demo地址:https://github.com/tian-qingzhao/rabbitmq-demo 一、RabbitMQ组件概念 1.1 Server:接收客户端的连接,实现AMQP实体服务。 1.2 Connection:连接 应用程序与Server的网络连接,TCP连接。 1.3 Channel&…

网络:相比于HTTP,HTTPS协议到底安全在哪?

网络:相比于HTTP,HTTPS协议到底安全在哪? 我们知道HTTPS也是一种应用层协议,它在HTTP的基础上有一层加密,因为HTTP的数据传输都是以明文方式传输的,所以加密主要是为了防止数据在传输的时候被篡改 今天我…

AI 基础设施新范式,百度百舸 5.0 技术深度解析

本文整理自 2025 年 8 月 29 日百度云智大会 —— AI 算力平台专题论坛,百度智能云 AI 计算首席科学家王雁鹏的同名主题演讲。大家下午好!昨天在主论坛,我们正式发布了百度百舸 AI 计算平台 5.0,并展示了多项亮眼的性能数据。今天…

IO进程线程;多线程;线程互斥同步;互斥锁;无名信号量;条件变量;0905

思维导图多线程打印ABC运用无名面量 实现进程同步#include<myhead.h> //定义 无名信号量 sem_t sem1; sem_t sem2; sem_t sem3; //线程1 void* task1(void *arg) {while(1){sem_wait(&sem1);printf("A");fflush(stdout);sleep(1);sem_post(&sem2);} } …

固高 GTS-800 运动控制卡完全使用指南:从硬件部署到高阶应用

固高 GTS-800 系列运动控制卡作为中端工业控制领域的标杆产品,以其 8-16 轴同步控制能力、丰富的插补功能和稳定的性能,广泛应用于激光加工、PCB 制造、精密装配等自动化设备中。本文将系统讲解 GTS-800 的硬件架构、开发环境搭建、核心功能实现及工程实践技巧,帮助工程师快…

STM32F103_Bootloader程序开发15 - 从Keil到vscode + EIDE + GCC的迁移实践

导言 STM32 - Embedded IDE - GCC - 如何在工程中生成.bin格式固件 STM32 - Embedded IDE - GCC - 使用 GCC 链接脚本限制 Flash 区域 STM32 - Embedded IDE - GCC - 如何在工程中定义一段 NoInit RAM 内存 STM32 - Embedded IDE - GCC - 如何将编译得到的.bin固件添加CRC32校验…

HTTP协议——理解相关概念、模拟实现浏览器访问自定义服务器

文章目录HTTP协议理解相关概念HTTP相关背景知识认识URLHTTP协议在网络通信的宏观认识urlencode & urldecodeHTTP请求和应答的格式模拟实现浏览器访问自定义服务器关于http requesthttp request的请求行——URI使用浏览器完成静态资源的访问常用的报头属性http response状态…

【服务器】英伟达M40显卡风冷方案心得

在之前的博文中&#xff0c;博主说到最近准备自己组装一台服务器&#xff0c;主要用于有限元仿真&#xff0c;其次兼顾一部分AI机器学习的工作&#xff0c;于是博主就入手了一张英伟达Tesla M40的12G显卡GPU。本来博主也纠结过是买M40还是M60&#xff0c;后来在网上看到说M60看…

Java中的锁升级机制

目录 核心思想 Java对象头&#xff08;Object Header&#xff09;与Mark Word 锁升级的详细步骤 1. 无锁&#xff08;No Lock&#xff09; 2. 偏向锁&#xff08;Biased Locking&#xff09; 3. 轻量级锁&#xff08;Lightweight Lock&#xff09; 4. 重量级锁&#xff…

Scikit-learn Python机器学习 - 特征预处理 - 标准化 (Standardization):StandardScaler

锋哥原创的Scikit-learn Python机器学习视频教程&#xff1a; 2026版 Scikit-learn Python机器学习 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 课程介绍 本课程主要讲解基于Scikit-learn的Python机器学习知识&#xff0c;包括机器学习概述&#xff0c;特征工程(数据…

windows下wsl2 ubuntu开发配置

配置环境变量# 设置方式 命令/文件 生效范围 适用场景 # 临时 export FORCE_UNSAFE_CONFIGURE1 当前终端 临时编译软件 # 用户级永久 ~/.bashrc或~/.profile 当前用户 长期使用&#xff08;单用户&#xff09; # 系统级永久 /etc/environment或/…

网络编程 05:UDP 连接,UDP 与 TCP 的区别,实现 UDP 消息发送和接收,通过 URL 下载资源

一、概述 记录时间 [2025-09-02] 前置文章&#xff1a; 网络编程 01&#xff1a;计算机网络概述&#xff0c;网络的作用&#xff0c;网络通信的要素&#xff0c;以及网络通信协议与分层模型 网络编程 02&#xff1a;IP 地址&#xff0c;IP 地址的作用、分类&#xff0c;通过 …

告别线缆束缚!AirDroid Cast 多端投屏,让分享更自由

AirDroid Cast 是一款功能强大的跨平台投屏应用&#xff0c;能够轻松实现手机、电脑之间以及手机之间的屏幕共享与控制。无论是工作演示、在线教学还是游戏直播&#xff0c;AirDroid Cast 都能提供流畅稳定的投屏体验。 1. 下载与安装 您可以通过以下链接下载 AirDroid Cast&…

从零开始学大模型之大模型训练流程实践

大模型训练流程实践 本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型开发 学习视频/籽料/面试题 都在这>>Github<< >>Gitee<< 6.1 模型预训练 在上一章&#xff0c;我们逐步拆解了 LLM 的模型结构及训练过程&#xff0c;从零手…

一文从零部署vLLM+qwen0.5b(mac本地版,不可以实操GPU单元)

第一步&#xff1a;下载anaconda for mac https://zhuanlan.zhihu.com/p/350828057 知乎保姆级教程 https://www.anaconda.com/docs/getting-started/anaconda/install#macos-linux-installation 下载地址 第二步&#xff1a;部署vllm的虚拟环境 https://www.53ai.com/news/Op…

Go语言Range用法全解析

引言Go 语言中的 range 关键字是集合遍历的核心语法结构&#xff0c;它提供了一种高效且类型安全的方式来迭代各种数据结构。range 的设计完美体现了 Go 语言的工程哲学 - 通过最小化的语法提供最大化的功能。标准库中的许多关键组件&#xff08;如 sync.Map、bufio.Scanner 等…

mysql进阶语法(视图)

1、视图概念 是从一个或多个表中导出来的表&#xff0c;它是一种虚拟存在的表&#xff0c;表的结构和数据都依赖于基本表 应用场景&#xff1a; 多个地方用到同样的查询结果该查询结果用到复杂的select语句 视图优点&#xff1a; 简化查询语句&#xff1a;简化用户的查询操作&a…

编程范式:提升抽象能力的思维工具

这是一个编程中的核心概念&#xff0c;它代表了编写程序的一套基本风格、方法论和哲学。学习不同的编程范式&#xff0c;就像学习用不同的工具和思维方式来解决问题&#xff0c;能极大地提升你作为程序员的抽象能力和解决问题的能力。一、什么是编程范式&#xff1f;编程范式 是…

阿里云-基于通义灵码实现高效 AI 编码 | 1 | 在 Visual Studio Code 中安装和使用灵码

文章目录一、在 Visual Studio Code 中安装和使用灵码1.1 准备工作1.2 在 Visual Studio Code 安装通义灵码1.3 登录阿里云账号免费个人运维知识库&#xff0c;欢迎您的订阅&#xff1a;literator_ray.flowus.cn 一、在 Visual Studio Code 中安装和使用灵码 本安装步骤适用于…

WordPress搭建个人网站(Linux版)

WordPress搭建个人网站&#xff0c;使用Linux系统。我需要详细说明整个过程&#xff0c;包括环境准备、安装步骤、配置优化等。首先&#xff0c;用户可能对Linux不太熟悉&#xff0c;所以需要从基础开始&#xff0c;比如选择合适的Linux发行版&#xff0c;如Ubuntu或CentOS。然…