【Seaborn】sns.histplot() 函数: 直方图绘制

sns.histplot() —— Seaborn 直方图绘制

seaborn.histplot()seaborn 提供的直方图绘制函数,基于 matplotlib 进行封装,相比 plt.hist() 更美观,并提供更丰富的功能,如 KDE 曲线自动调整 bin 宽度统计标准化 等。


1. 语法

import seaborn as sns

sns.histplot(data, bins=10, kde=False, stat="count", color=None, element="bars", multiple="layer")

2. 参数说明

参数说明
data需要绘制直方图的数据(列表、数组、Series)
bins直方图的分组数(默认自动选择)
kde是否绘制核密度估计(KDE)曲线
stat直方图的统计方式:count(计数)、density(概率密度)、percent(百分比)
color直方图颜色
elementbars(柱状)、step(阶梯状)、poly(多边形填充)
multiplelayer(分层)、stack(堆叠)、fill(归一化堆叠)

3. 基本用法

3.1 简单直方图

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

# 生成正态分布数据
data = np.random.randn(1000)

# 绘制直方图
sns.histplot(data, bins=30, color="blue", alpha=0.7)

plt.xlabel("Value")
plt.ylabel("Frequency")
plt.title("Histogram Example")
plt.show()

📌 说明

  • bins=30:将数据分成 30 组。
  • color="blue":设置直方图颜色。
  • alpha=0.7:透明度。
    在这里插入图片描述

3.2 直方图 + KDE 曲线

可以使用 kde=True 在直方图上添加 核密度估计(KDE)曲线,用于更平滑地显示数据分布。

sns.histplot(data, bins=30, kde=True, color="purple")
plt.show()

在这里插入图片描述


3.3 归一化直方图

使用 stat="density" 显示概率密度,使直方图的面积总和为 1,适用于概率分布分析。

sns.histplot(data, bins=30, kde=True, stat="density", color="green")
plt.show()

stat 可选值:

  • "count":默认,显示计数(每个柱子的频率)。
  • "density":每个柱子的面积总和为 1。
  • "percent":显示百分比。
    在这里插入图片描述

4. 多组数据对比

4.1 叠加直方图

如果有多个数据集,可以使用 hue 参数进行分类显示。

import pandas as pd

# 生成两组数据
data1 = np.random.randn(1000)
data2 = np.random.randn(1000) + 2  # 让数据偏移

# 创建 DataFrame
df = pd.DataFrame({"value": np.concatenate([data1, data2]),
                   "category": ["Group 1"] * 1000 + ["Group 2"] * 1000})

# 叠加直方图
sns.histplot(df, x="value", hue="category", bins=30, kde=True, element="step")
plt.show()

📌 说明

  • hue="category":按类别显示不同颜色。
  • element="step":使用阶梯状直方图,更清晰。
  • kde=True:添加密度曲线。
    在这里插入图片描述

4.2 堆叠直方图

使用 multiple="stack" 进行堆叠。

sns.histplot(df, x="value", hue="category", bins=30, multiple="stack")
plt.show()

multiple 可选值:

  • "layer":默认,重叠显示。
  • "stack":堆叠。
  • "fill":归一化堆叠(各柱子的高度总和为 1)。
    在这里插入图片描述

5. sns.histplot() vs plt.hist()

功能sns.histplot()plt.hist()
默认风格美观,默认带 KDE传统 Matplotlib 风格
统计方式count, density, percentdensity=True/False
多数据支持hue 分类,multiple 叠加需要手动绘制
透明度控制alphaalpha
推荐使用数据分析,数据分类可视化基础绘图

6. 总结

  • sns.histplot()plt.hist() 的高级版本,默认更美观。
  • bins 控制柱子数量,kde=True 添加密度曲线。
  • stat 可选择 "count", "density", "percent" 进行不同统计方式。
  • hue 可用于分组数据,multiple 设定柱子叠加方式。
  • 推荐用于 数据分析、机器学习、统计建模 场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值