分布图主要用来展示某些现象或数据在地理空间、时间或其他维度上的分布情况。它可以清晰地反映出数据的空间位置、数量、密度等特征,帮助人们更好地理解数据的内在规律和相互关系。

目录

单变量分布

变量关系组图

双变量关系

核密度估计

山脊分布图


单变量分布

distplot() 函数是 Seaborn 库中用于绘制单变量分布图的一个非常有用的函数。值得注意的是,从 Seaborn 的较新版本(特别是从0.11.0版本开始)开始,distplot() 函数已经被标记为弃用(deprecated),并建议使用更具体和灵活的绘图函数,如 histplot() 用于直方图,kdeplot() 或 displot()用于更复杂的分布可视化。

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
sns.set(style="darkgrid")
# 创建一个2行2列的子图,每个子图的大小为8x8,不共享x轴和y轴
f, axes = plt.subplots(2, 2, figsize=(8, 8), sharex=False, sharey=False)
sns.despine(left=True)
# 创建一个随机数生成器,种子为10
rs = np.random.RandomState(8)
# 生成一个包含1000个随机数的数组
d = rs.normal(size=1000)
# 绘制简单的直方图,kde=False不绘制核密度估计图,下列其他图类似
sns.distplot(d, kde=False, color="r", ax=axes[0, 0])
# 使用seaborn库绘制d的分布图,不绘制直方图,绘制rug图,颜色为黄色,绘制在axes[0, 1]上
sns.distplot(d, hist=False, rug=True, color="y", ax=axes[1, 0])
# 使用seaborn库绘制d的分布图,不绘制直方图,颜色为蓝色,kde_kws参数设置阴影为True,绘制在axes[1, 0]上
sns.distplot(d, hist=False, color="b", kde_kws={"shade": True}, ax=axes[0, 1])
# 使用seaborn库中的distplot函数绘制直方图,参数d为数据,color为颜色,ax为坐标轴
sns.distplot(d, color="g", ax=axes[1, 1])
# 设置坐标轴的y轴刻度
plt.setp(axes, yticks=[])
plt.tight_layout()

变量关系组图

pairplot是Seaborn库中的一个强大且多功能的绘图函数,它主要用于绘制数据集中所有可能的成对关系图。这个函数通过生成一个网格图,每个单元格展示一个变量对的分布图(如散点图、直方图或核密度估计图),非常适合于初步的数据探索和可视化。

  • data:指定要绘制的数据集,通常是一个pandas的DataFrame对象。
  • vars:可选参数,用于指定要绘制哪些变量的关系图。如果不指定,则默认绘制数据集中所有数值型变量的关系图。
  • hue:可选参数,用于指定一个分类变量,根据该变量的不同值对数据进行分组展示。
  • kind:控制非对角线上图表类型的参数,可选"scatter"(散点图)和"reg"(回归图)等。但需要注意的是,pairplot的kind参数可能不如其他Seaborn图表那样灵活,因为它主要关注于成对关系的展示。
  • diag_kind:控制对角线上图表类型的参数,可选"hist"(直方图)和"kde"(核密度估计图)等。
  • markers:控制散点图中数据点的标记类型,用于区分不同的数据点或组别。
df = sns.load_dataset("iris")
sns.pairplot(df)

可以控制指定位置的图表类型,比如对角线使用核密度估计图  

sns.pairplot(df, diag_kind="kde")

 也可以对数据进行分组展示

sns.pairplot(iris, hue="species")  

双变量关系

双变量关系(Bivariate Relationship)是统计学和数据分析中的一个基本概念,它指的是两个变量之间的关联或相互作用。在这种关系中,一个变量的变化可能会影响到另一个变量的变化,但这并不意味着一个变量是另一个变量的原因。双变量关系可以是线性的,也可以是非线性的,它可以是正相关、负相关,或者根本没有明确的关联,即零相关。

jointplot是Seaborn库中的一个强大工具,用于可视化两个变量的联合分布及其关系。它结合了多种图表类型,如散点图、直方图、核密度估计图(KDE)等,提供了对数据分布和关系的深入理解。jointplot能够同时展示两个变量的联合分布以及它们各自的边缘分布,从而帮助用户全面理解变量之间的关系和分布情况。

  • x, y:指定要绘制的两个变量,分别作为x轴和y轴的数据。
  • data:包含x和y变量的数据集,通常是一个pandas的DataFrame对象。
  • kind:指定绘制图表的类型,如'scatter'(散点图)、'kde'(核密度估计图)、'hex'(蜂窝图)等。
  • color:设置图表中元素的颜色。
  • size:设置图表的大小(正方形)。
  • ratio:设置中心图与侧边图的比例。
  • joint_kws, marginal_kws:分别用于自定义联合图和边缘图的样式。
# 创建一个随机数生成器,种子为8
rs = np.random.RandomState(8)
# 生成1000个服从Gamma分布的随机数
x = rs.gamma(8, size=1000)
# 生成1000个服从正态分布的随机数,并乘以-0.5
y = -.5 * x + rs.normal(size=1000)
# x和y为数据,kind参数指定图形类型为六边形,color参数指定颜色为红色
sns.jointplot(x=x, y=y, kind="hex", color="r")

# 加载tips数据集
tips = sns.load_dataset("tips")
# ,x轴为total_bill,y轴为tip,数据为tips,类型为线性回归,x轴范围为0到50,y轴范围为0到12,颜色为绿色,高度为6
g = sns.jointplot(x="total_bill", y="tip", data=tips, kind="reg",xlim=(0, 50), ylim=(0, 12), color="g", height=6)

 

核密度估计

核密度估计(Kernel Density Estimation, KDE)是一种在概率论中用来估计未知的密度函数的非参数检验方法,由Rosenblatt(1955)和Emanuel Parzen(1962)提出,又称为Parzen窗(Parzen window)。核密度估计的基本思想是,对于给定的数据样本,通过核函数(通常是对称且非负的密度函数,如高斯函数)来拟合数据点的局部密度,进而估计整个数据的密度函数。具体来说,对于数据集中的每一个点,都以其为中心放置一个核函数,然后对所有核函数进行加权平均(或求和),得到的结果即为整个数据集的密度估计。

# 设置绘图风格为暗色
sns.set(style="dark")
# 创建一个随机数生成器,种子为8
rs = np.random.RandomState(8)
# 生成随机数的数组
x, y = rs.randn(2, 1000)
# 绘制x和y的核密度估计图
sns.kdeplot(x=x, y=y,color="r")
# 调整布局,使图形更加紧凑
f.tight_layout()

# 设置绘图风格为darkgrid
sns.set(style="darkgrid")
# 加载iris数据集
iris = sns.load_dataset("iris")
# 查询出species为setosa的数据
setosa = iris.query("species == 'setosa'")
# 查询出species为virginica的数据
virginica = iris.query("species == 'virginica'")
# 创建一个8x8的绘图区域
f, ax = plt.subplots(figsize=(8, 8))
# 设置绘图区域的纵横比为1:1
ax.set_aspect("equal")
# 绘制setosa数据的密度图,使用Blues颜色映射,并设置阴影和最低值阴影
ax = sns.kdeplot(x=setosa.sepal_width, y=setosa.sepal_length,cmap="Blues", shade=True, shade_lowest=False)
# 绘制virginica数据的密度图,使用Reds颜色映射,并设置阴影和最低值阴影
ax = sns.kdeplot(x=virginica.sepal_width, y=virginica.sepal_length,cmap="Reds", shade=True, shade_lowest=False)
# 获取Reds颜色映射的倒数第二个颜色
red = sns.color_palette("Reds")[-2]
# 获取Blues颜色映射的倒数第二个颜色
blue = sns.color_palette("Blues")[-2]
# 在绘图区域中添加文本,显示species为virginica的数据
ax.text(2.5, 8.2, "virginica", size=16, color=blue)
# 在绘图区域中添加文本,显示species为setosa的数据
ax.text(3.8, 4.5, "setosa", size=16, color=red)

山脊分布图

山脊分布图,也称为山脊图(Ridge Plot)或Joy Plot,是一种数据可视化的方法,主要用于展示一个或多个组的数据分布情况。山脊图通过平滑的密度曲线来表示每个组的数据分布,这些曲线沿垂直轴堆叠排列,形成类似山脊的视觉效果。制作基于核密度估计(Kernel Density Estimation, KDE),这是一种估计概率密度函数的非参数方式。通过KDE,可以对每个组的数据进行平滑处理,从而得到连续的密度曲线。

# 创建一个随机数生成器,种子为8
rs = np.random.RandomState(8)
# 生成500个随机数
x = rs.randn(500)
# 创建一个字符串,重复50次
g = np.tile(list("ABCDEFGHIJ"), 50)
# 创建一个DataFrame,包含x和g两列
df = pd.DataFrame(dict(x=x, g=g))
# 将g列中的字符转换为ASCII码
m = df.g.map(ord)
# 将m加到x列上
df["x"] += m
# 创建一个颜色调色板
pal = sns.cubehelix_palette(10, rot=-.5, light=.7)
# 创建一个FacetGrid,按g列进行分面,hue参数设置为g,aspect参数设置为15,height参数设置为0.5,palette参数设置为pal
g = sns.FacetGrid(df, row="g", hue="g", aspect=15, height=.5, palette=pal)
# 在每个分面上绘制核密度图,clip_on参数设置为False,shade参数设置为True,alpha参数设置为1,lw参数设置为1.5,bw参数设置为0.2
g.map(sns.kdeplot, "x", clip_on=False, shade=True, alpha=1, lw=1.5, bw=.2)
# 在每个分面上绘制核密度图,clip_on参数设置为False,color参数设置为白色,lw参数设置为2,bw参数设置为0.2
g.map(sns.kdeplot, "x", clip_on=False, color="w", lw=2, bw=.2)
# 在每个分面上绘制水平线,y参数设置为0,lw参数设置为2,clip_on参数设置为False
g.map(plt.axhline, y=0, lw=2, clip_on=False)
# 定义一个函数,用于在每个分面上添加标签
def label(x, color, label):# 获取当前的坐标轴ax = plt.gca()# 在坐标轴上添加文本,字体加粗,颜色为color,文本内容为label,水平对齐方式为左对齐,垂直对齐方式为居中对齐,坐标轴变换为ax.transAxesax.text(0, .2, label, fontweight="bold", color=color,ha="left", va="center", transform=ax.transAxes)
# 在每个分面上调用label函数
g.map(label, "x")
# 调整子图之间的间距
g.fig.subplots_adjust(hspace=-.5)
# 设置标题为空
g.set_titles("")
# 设置y轴刻度为空
g.set(yticks=[])
# 去掉底部和左边的边框
g.despine(bottom=True, left=True)

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

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

相关文章

DDD+WebAPI实战

DDD+WebAPI实战 DDD(领域驱动设计,Domain-Driven Design)是一种面向对象的设计方法,它强调将业务逻辑封装在模型中,并通过这些模型来驱动整个应用的设计。在.NET环境中,特别是在使用ASP.NET Core和Web API构建应用时,DDD可以帮助我们更好地组织代码,使得业务逻辑更加清…

人力资源管理的思维方法学习笔记1

北京师范大学政府管理学院1.课程介绍: 讲述视角上,本课程侧重人力资源管理的思维方式,即人力资源管理理论和时间的不同视角和主导范式的分析。这既是对人力资源管理理论发展的凝练,也是对人力资源管理实践演进过程的总结。对于把握…

适应新环境:Trae编辑器下的IDEA快捷键定制

介绍:学习如何在Trae编辑器中配置IntelliJ IDEA风格的快捷键,减少开发环境间的切换成本,提升编码效率。通过安装插件或手动调整,让你更快适应新工具大家好,我是凯哥Java本文标签:代码编辑效率、Trae快捷键、…

基于YOLO8的汽车碰撞事故检测系统【数据集+源码+文章】

基于YOLOv8和Streamlit的汽车碰撞事故检测系统 文末附下载地址 开发目的 随着城市化进程的加快和机动车保有量的持续攀升,道路交通安全问题日益突出,汽车碰撞事故频发不仅严重威胁驾乘人员的生命安全,也对公共秩序、应急响应效率及交通管理…

Unity FARO 测量臂:从零构建实时数字孪生系统

前言:当精准测量遇见实时渲染 在高端制造、质量检测和逆向工程领域,法奥 (FARO) 测量臂是精准的代名词。它能以亚毫米级的精度捕捉现实世界中的三维坐标。现在,想象一下,如果我们将这种精度与 Unity 的强大实时渲染能力结合起来,会发生什么? 我们将得到一个数字孪生 (D…

延迟 队列

概念 延迟队列顾名思义就是消息不立即发送给消费者消费,而是延迟一段时间再交给消费者。 RabbitMQ本身没有直接支持延迟队列的的功能,但是可以通过前面所介绍的TTL死信队列的方式组合 模拟出延迟队列的功能. RabbitMQ 有些版本还支持延迟队列的插件安…

Windows+Docker一键部署CozeStudio私有化,保姆级

在 ​Windows环境​ 下,通过docker,使用 ​火山引擎Doubao-Seed-1.6模型,面向 ​小白新手​ 的 ​Coze Studio私有化部署详细步骤。整个过程分为四大阶段,包含每一步的指令、成功标志。 Coze Studio 私有化部署指南(W…

【HEMCO Reference Guide 参考指南第二期】配置文件的结构和语法

配置文件的结构和语法 HEMCO 配置文件的结构和语法(The HEMCO configuration file) 1. Settings(设置) 2. Extension Switches(扩展模块开关) 3. Base Emissions(基础排放配置) 4. Scale Factors(缩放因子) 5. Masks(掩膜区域) 6. Data Collections(数据集合) 参…

01.单例模式基类模块

一、单例模式的构成1、私有的静态成员变量2、公共的静态成员属性或方法3、私有构造函数using System.Collections; using System.Collections.Generic; using UnityEngine;public class BaseManager : MonoBehaviour {void Start(){}// Update is called once per framevoid Up…

[网络入侵AI检测] 深度前馈神经网络(DNN)模型

第4章:深度前馈神经网络(DNN)模型 欢迎回来🐻‍❄️ 在第1章:分类任务配置(二分类 vs. 多分类)中,我们学习了如何配置模型以回答不同类型的问题;在第2章:数…

【目录-多选】鸿蒙HarmonyOS开发者基础

All look at the answer 针对包含文本元素的组件,例如Text、Button、TextInput等,可以使用下列哪些属性关于ForEach(arr, itemGenerator, index)组件的描述正确的是下面哪些容器组件是可以滚动的关于Tabs组件和TabContent组件,下列描述正确的…

第一讲 Vscode+Python+anaconda 安装

1、vscode下载和安装官网下载最新版:https://code.visualstudio.com/Download注:文件夹最好不要出现中文和空格 2、将vscode修改为中文环境注意:右下角弹出提示框,点击“yes”若不慎关闭了对话框,也不要紧,…

《sklearn机器学习——回归指标2》

均方对数误差(mean_squared_log_error函数) mean_squared_log_error函数计算与平方(二次方)对数误差或损失的期望值相一致的风险指标。 Mean Squared Logarithmic Error 参数与返回值 函数简介 mean_squared_log_error 是用于计算…

当电力设计遇上AI:良策金宝AI如何重构行业效率边界?

在工程设计行业,我们常说“经验为王”。一个资深工程师的价值,往往体现在他对规范的熟悉、对计算的把握、对图纸的掌控。但今天,这个“王座”正在被重新定义。不是经验不重要了,而是——效率的边界,正在被AI重构。以良…

【深度学习】重采样(Resampling)

在深度学习的背景下,重采样主要涉及两个方面: 数据层面的重采样:处理不平衡数据集。模型层面的重采样:在神经网络内部进行上采样(UpSampling)或下采样(DownSampling),常见…

计算机实现乘法运算的方式---ChatGPT 5 thinking作答

计算机如何实现“乘法” 下面分层次把乘法在数据表示 → 整数硬件/软件 → 大整数 → 浮点数 → 特殊场景里的主流实现方式讲清楚,并给出取舍建议与简单伪代码。0)前置:数的表示 无符号整数:按二进制位权求值。有符号整数&#xf…

Ubuntu 安装 / 配置 VNC

一、基础环境准备 1. 更新 sudo apt update 2. 安装 VNC 服务器 & 轻量桌面(XFCE) # 安装 TightVNC 服务器 + XFCE 桌面(推荐轻量方案) sudo apt install tightvncserver xfce4 xfce4-goodies xterm -y二、核心配置:让 VNC 加载桌面环境 1. 初始化 VNC 密码(首次…

计算机大数据毕业设计推荐:基于Spark的新能源汽车保有量可视化分析系统

精彩专栏推荐订阅:在下方主页👇🏻👇🏻👇🏻👇🏻 💖🔥作者主页:计算机毕设木哥🔥 💖 文章目录 一、项目介绍二、…

Android Looper源码阅读

看下Android Looper源代码,有助于理解Android系统消息循环流程、handler机制。Looper注释为class used to run a message loop for a thread, 即用于为一个线程运行消息循环, 或者说循环处理一个线程的消息。 Looper源码先看下这个类里的变量…

uni-app 和 uni-app x 的区别

差异解析 uni-app 是 DCloud 推出的成熟跨平台前端框架,基于 Vue.js JavaScript/TypeScript。支持广泛平台:iOS、Android、HarmonyOS、Web、小程序等,用一套代码同时生成多个端应用。渲染方式主要通过 WebView 或小程序原生框架 JS 逻辑&am…