Seaborn(一) - Seaborn绘图方法介绍

文章目录

  • 一、分布型绘图
    • [1. 分布图](#1. 分布图)
    • [2. 直方图](#2. 直方图)
    • [3. 核密度估计图](#3. 核密度估计图)
    • [4. 地毯图](#4. 地毯图)
    • [5. 经验累积分布函数图](#5. 经验累积分布函数图)
    • [6. 双变量分布图](#6. 双变量分布图)
  • 二、分类型绘图
    • [1. 分类图](#1. 分类图)
    • [2. 带状图](#2. 带状图)
    • [3. 蜂群图](#3. 蜂群图)
    • [4. 箱线图](#4. 箱线图)
    • [5. 小提琴图](#5. 小提琴图)
    • [6. 柱形图](#6. 柱形图)
    • [7. 点图](#7. 点图)
    • [8. 计数图](#8. 计数图)
  • 三、矩阵型绘图
    • [1. 热力图](#1. 热力图)
    • [2. 聚类图](#2. 聚类图)
  • 四、关系型绘图
    • [1. 关系图](#1. 关系图)
    • [2. 散点图](#2. 散点图)
    • [3. 折线图](#3. 折线图)
  • 五、回归型绘图
    • [1. 回归图](#1. 回归图)
    • [2. 线性模型图](#2. 线性模型图)
  • 六、多图网格
    • [1. 分面网格](#1. 分面网格)
    • [2. 配对网格](#2. 配对网格)
    • [3. 双变量分布图](#3. 双变量分布图)
    • [4. 配对图](#4. 配对图)

一、分布型绘图

1. 分布图

sns.displot() 是 Seaborn 中用于绘制数据分布 的高级接口,可灵活生成单变量或双变量的分布可视化,支持通过 kind 参数指定具体绘图类型(如直方图、核密度图、ECDF图等),并集成了分面功能(按行/列拆分多个子图),适合快速探索变量分布特征及多组对比。

分布图方法:

python 复制代码
def displot(
    data=None, *,
    # Vector variables
    x=None, y=None, hue=None, row=None, col=None, weights=None,
    # Other plot parameters
    kind="hist", rug=False, rug_kws=None, log_scale=None, legend=True,
    # Hue-mapping parameters
    palette=None, hue_order=None, hue_norm=None, color=None,
    # Faceting parameters
    col_wrap=None, row_order=None, col_order=None,
    height=5, aspect=1, facet_kws=None,
    **kwargs,
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,x/y/hue等参数可直接使用列名。
x/y vector or str None 待分析的变量(x为水平轴,y为垂直轴),单变量分布指定xy,双变量需同时指定。
hue vector or str None 分组变量,按类别对分布进行着色区分,便于组间比较。
row/col vector or str None 分面变量,按类别将图拆分为多行(row)或多列(col)子图,实现多维度对比。
kind str 'hist' 绘图类型: • 'hist':直方图(默认); • 'kde':核密度图; • 'ecdf':经验累积分布函数图; • 'rug':地毯图。
rug bool False 是否在坐标轴上添加地毯图(用短线标记数据点位置,增强分布细节)。
log_scale bool or tuple None 是否对坐标轴使用对数刻度(单变量为True/False,双变量为(x_log, y_log)元组)。
col_wrap int None col分面时,指定每行最多显示的子图数量(自动换行)。
height/aspect float 5/1 单个子图的高度(height)和宽高比(aspect,宽度=height×aspect)。

2. 直方图

sns.histplot() 专注于绘制单变量或双变量的频数分布直方图,通过将连续数据划分为离散区间(bins),用矩形高度/面积表示区间内数据的频数或频率,直观展示数据的集中趋势、离散程度和分布形态(如对称、偏态等),支持分组叠加、堆叠或并排显示。

直方图方法:

python 复制代码
def histplot(
    data=None, *,
    # Vector variables
    x=None, y=None, hue=None, weights=None,
    # Histogram computation parameters
    stat="count", bins="auto", binwidth=None, binrange=None,
    discrete=None, cumulative=False, common_bins=True, common_norm=True,
    # Histogram appearance parameters
    multiple="layer", element="bars", fill=True, shrink=1,
    # Histogram smoothing with a kernel density estimate
    kde=False, kde_kws=None, line_kws=None,
    # Bivariate histogram parameters
    thresh=0, pthresh=None, pmax=None, cbar=False, cbar_ax=None, cbar_kws=None,
    # Hue mapping parameters
    palette=None, hue_order=None, hue_norm=None, color=None,
    # Axes information
    log_scale=None, legend=True, ax=None,
    # Other appearance keywords
    **kwargs,
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,支持列名直接引用变量。
x/y vector or str None 绘图变量(x为水平轴,y为垂直轴),单变量指定其一,双变量同时指定。
hue vector or str None 分组变量,按类别着色,区分不同组的分布。
stat str 'count' 统计量类型: • 'count':频数(默认); • 'frequency':频率; • 'density':概率密度(总面积=1); • 'probability':概率(总频数=1)。
bins int/str/array 'auto' 区间设置:整数指定数量,'auto'自动计算,数组直接指定边界。
binwidth float None 区间宽度(指定后忽略bins)。
kde bool False 是否叠加核密度估计曲线,增强分布趋势可视化。
multiple str 'layer' 多组展示方式: • 'layer':重叠(默认); • 'stack':堆叠; • 'fill':归一化堆叠; • 'dodge':并排。
discrete bool None 是否按离散值绘图(True时每个值对应一个区间,无需手动设bins)。
cumulative bool False 是否绘制累积分布(展示小于等于当前区间上限的累计值)。

3. 核密度估计图

sns.kdeplot() 基于核密度估计(KDE)方法,绘制连续变量的平滑概率密度曲线,无需分箱,能更精准地展示数据分布形态(如单峰/多峰、对称性),支持单变量曲线、双变量等高线/热力图,以及分组对比,是探索连续变量分布的重要工具。

核密度估计图方法:

python 复制代码
def kdeplot(
    data=None, *, x=None, y=None, hue=None, weights=None,
    palette=None, hue_order=None, hue_norm=None, color=None, fill=None,
    multiple="layer", common_norm=True, common_grid=False, cumulative=False,
    bw_method="scott", bw_adjust=1, warn_singular=True, log_scale=None,
    levels=10, thresh=.05, gridsize=200, cut=3, clip=None,
    legend=True, cbar=False, cbar_ax=None, cbar_kws=None, ax=None,
    **kwargs,
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,变量可通过列名指定。
x/y vector or str None 连续变量:单变量指定x(垂直密度曲线)或y(水平密度曲线);双变量同时指定(绘制等高线/热力图)。
hue vector or str None 分组变量,按类别绘制多条密度曲线并着色,便于组间分布对比。
fill bool None 是否填充曲线下方区域(True时增强视觉效果,单变量有效)。
bw_method str/float 'scott' 带宽选择方法:'scott'/'silverman'(经典规则)或浮点数(直接指定缩放因子)。
bw_adjust float 1 带宽调整系数(>1更平滑,<1更精细)。
multiple str 'layer' 多组叠加方式:'layer'(重叠,默认)、'stack'(堆叠)、'fill'(归一化堆叠)。
levels int/array 10 双变量图中等高线数量或密度阈值(仅xy同时指定时生效)。
cut float 3 曲线向数据范围外延伸的倍数(默认延伸至均值±3倍标准差外)。
clip tuple None 限制绘图范围(如clip=(0, None)仅绘制x≥0区域)。
cumulative bool False 是否绘制累积分布曲线(展示小于等于某值的概率)。

4. 地毯图

地毯图(rug plot)是一种简洁的分布可视化工具,通过在坐标轴上绘制一系列短小的竖线(单变量)或点(双变量)来标记每个数据点的具体位置,直观展示数据的密集程度和分布范围。它通常不单独使用,而是作为直方图、核密度图等的补充,帮助观察原始数据的分布细节(如是否有聚类、离群点等)。

地毯图方法:

python 复制代码
def rugplot(
    data=None, *, x=None, y=None, hue=None, height=.025, expand_margins=True,
    palette=None, hue_order=None, hue_norm=None, legend=True, ax=None, **kwargs
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,x/y/hue可直接使用列名。
x/y vector or str None 待展示的变量:单变量时指定x(在x轴绘制竖线)或y(在y轴绘制横线);双变量时同时指定(在坐标点位置标记)。
hue vector or str None 分组变量,按类别对地毯线/点着色,区分不同组的数据分布。
height float 0.025 地毯线的长度(相对于坐标轴高度的比例)。
expand_margins bool True 是否自动扩展坐标轴边缘,避免地毯线与图表边界重叠。
palette str/list/dict None 用于hue分组的调色板。
ax matplotlib Axes None 指定绘图的坐标轴对象,用于嵌入到其他图表中(如叠加在直方图上)。

5. 经验累积分布函数图

经验累积分布函数(ECDF)图用于展示数据的累积分布特征,横轴为变量值,纵轴为小于等于该值的样本所占比例(或频数)。与直方图、核密度图不同,ECDF图直接基于原始数据绘制,不依赖分箱或平滑参数,能精确反映数据的累积趋势,便于比较多组数据的分布差异(如中位数位置、分布范围等)。

经验累积分布函数图方法:

python 复制代码
def ecdfplot(
    data=None, *,
    # Vector variables
    x=None, y=None, hue=None, weights=None,
    # Computation parameters
    stat="proportion", complementary=False,
    # Hue mapping parameters
    palette=None, hue_order=None, hue_norm=None,
    # Axes information
    log_scale=None, legend=True, ax=None,
    # Other appearance keywords
    **kwargs,
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,支持列名直接引用变量。
x/y vector or str None 待分析的变量:x为水平轴(常规累积分布),y为垂直轴(旋转90度的累积分布),单变量指定其一即可。
hue vector or str None 分组变量,按类别绘制多条累积曲线,便于组间分布对比。
stat str 'proportion' 纵轴统计量: • 'proportion':比例(默认,范围0-1); • 'count':频数(范围0-样本量)。
complementary bool False 是否绘制互补累积分布(纵轴为大于该值的比例/频数,即1 - 累积比例)。
log_scale bool or tuple None 是否对坐标轴使用对数刻度(单变量时为True/False,双变量时为(x_log, y_log)元组)。
palette str/list/dict None 用于hue分组的调色板。
ax matplotlib Axes None 指定绘图的坐标轴对象,用于自定义布局或子图嵌入。

6. 双变量分布图

双变量分布图用于展示两个变量之间的联合分布关系,可同时呈现二者的关联模式(如线性、非线性)和各自的单变量分布特征。Seaborn 中 sns.jointplot() 是绘制双变量分布的常用函数,它在中心区域展示双变量关系(如散点图、核密度图等),并在边缘区域添加两个变量的单变量分布(如直方图、核密度曲线),是探索变量相关性的高效工具。

核密度估计图方法:

python 复制代码
def jointplot(
    data=None, *, x=None, y=None, hue=None, kind="scatter",
    height=6, ratio=5, space=.2, dropna=False, xlim=None, ylim=None,
    color=None, palette=None, hue_order=None, hue_norm=None, marginal_ticks=False,
    joint_kws=None, marginal_kws=None,
    **kwargs
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,x/y/hue可直接使用列名。
x/y vector or str None 待分析的两个变量(x为水平轴,y为垂直轴),必须同时指定。
hue vector or str None 分组变量,按类别对双变量分布进行着色,区分不同组的关联模式。
kind str 'scatter' 中心区域的绘图类型: • 'scatter':散点图(默认); • 'kde':核密度等高线图; • 'hex':六边形 bins 热力图; • 'reg':散点图+线性回归线; • 'resid':残差图。
height float 6 整个图表的高度(英寸)。
ratio int 5 中心区域与边缘区域的高度比例(如5表示中心高度是边缘的5倍)。
space float 0.2 中心区域与边缘区域之间的间距(英寸)。
dropna bool False 是否删除包含缺失值的样本(True时仅使用完整数据)。
xlim/ylim tuple None 限制x/y轴的显示范围(如xlim=(0, 100))。
color matplotlib color None 所有数据点的统一颜色,若指定hue则被忽略。
palette str/list/dict None 用于hue分组的调色板。
joint_kws dict None 传递给中心区域绘图函数的额外参数(如joint_kws={'s': 50}调整散点大小)。
marginal_kws dict None 传递给边缘区域单变量分布函数的额外参数(如marginal_kws={'bins': 20}调整直方图区间)。

二、分类型绘图

1. 分类图

分类图用于可视化展示分类变量与数值变量之间的关系 ,或不同分类变量组合下的数据分布特征。Seaborn 中的 sns.catplot() 是分类可视化的高级接口,通过 kind 参数可灵活生成多种分类图(如带状图、蜂群图、箱线图等),并支持分面功能(按行/列拆分子图),适合快速探索分类数据的分布规律和组间差异。

分类图方法:

python 复制代码
def catplot(
    data=None, *, x=None, y=None, hue=None, row=None, col=None, kind="strip",
    estimator="mean", errorbar=("ci", 95), n_boot=1000, seed=None, units=None,
    weights=None, order=None, hue_order=None, row_order=None, col_order=None,
    col_wrap=None, height=5, aspect=1, log_scale=None, native_scale=False,
    formatter=None, orient=None, color=None, palette=None, hue_norm=None,
    legend="auto", legend_out=True, sharex=True, sharey=True,
    margin_titles=False, facet_kws=None, ci=deprecated, **kwargs
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,x/y/hue等参数可直接使用列名。
x/y vector or str None 分类变量(通常为x)和数值变量(通常为y),用于展示分类与数值的关系。
hue vector or str None 二级分组变量,按类别着色,细化组内差异。
row/col vector or str None 分面变量,按类别将图拆分为多行(row)或多列(col)子图,实现多维度对比。
kind str 'strip' 绘图类型: • 'strip':带状图(默认); • 'swarm':蜂群图; • 'box':箱线图; • 'violin':小提琴图; • 'bar':柱形图; • 'point':点图; • 'count':计数图。
estimator callable 'mean' 用于汇总数值变量的统计函数(如np.meannp.median),适用于柱形图、点图等。
order/hue_order list None 指定xorder)或huehue_order)的类别展示顺序。
col_wrap int None col分面时,指定每行最多显示的子图数量(自动换行)。
height/aspect float 5/1 单个子图的高度(height)和宽高比(aspect,宽度=height×aspect)。
sharex/sharey bool True 分面时是否共享x轴(sharex)或y轴(sharey)刻度。

2. 带状图

带状图(strip plot)是一种基础的分类可视化工具,通过在分类轴上随机分布的点展示数值变量的分布,每个点代表一个样本。它能直观呈现数据的原始分布和重叠情况,但当数据量较大时可能出现点的过度重叠,掩盖分布细节,此时可配合jitter参数调整点的分散程度。

带状图方法:

python 复制代码
def stripplot(
    data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
    jitter=True, dodge=False, orient=None, color=None, palette=None,
    size=5, edgecolor=default, linewidth=0,
    hue_norm=None, log_scale=None, native_scale=False, formatter=None, legend="auto",
    ax=None, **kwargs
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,支持列名直接引用变量。
x/y vector or str None 分类变量(xy)和数值变量(对应另一个轴),确定点的分布方向。
hue vector or str None 分组变量,按类别对点着色,区分不同组的数据。
jitter bool/float True 是否添加随机抖动(避免点重叠):True为自动抖动,浮点数指定抖动幅度。
dodge bool False 当使用hue时,是否将不同组的点沿分类轴分开(避免重叠)。
size float 5 点的大小。
order/hue_order list None 指定分类变量或hue的类别展示顺序。

3. 蜂群图

蜂群图(swarm plot)是带状图的改进版,通过算法将点沿分类轴分散排列,既保留原始数据点的位置信息,又避免重叠,能更清晰地展示数值变量在每个分类下的分布密度和范围。适合中等数据量(数据量过大时可能运行缓慢或拥挤)。

蜂群图方法:

python 复制代码
def swarmplot(
    data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
    dodge=False, orient=None, color=None, palette=None,
    size=5, edgecolor=None, linewidth=0, hue_norm=None, log_scale=None,
    native_scale=False, formatter=None, legend="auto", warn_thresh=.05,
    ax=None, **kwargs
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,支持列名直接引用变量。
x/y vector or str None 分类变量(xy)和数值变量(对应另一个轴),确定蜂群的分布方向。
hue vector or str None 分组变量,按类别对点着色,区分组内差异。
dodge bool False 当使用hue时,是否将不同组的蜂群沿分类轴分开(避免重叠)。
size float 5 点的大小(过大会导致拥挤)。
warn_thresh float 0.05 数据点拥挤程度的警告阈值(超过时提示可能影响可视化效果)。
order/hue_order list None 指定分类变量或hue的类别展示顺序。

4. 箱线图

箱线图(box plot)通过四分位数概括数值变量在分类下的分布特征,箱体展示第25%(Q1)、中位数(Q2)、第75%(Q3)分位数,箱须延伸至1.5×IQR(四分位距,Q3-Q1)范围内的最值,超出部分标记为离群点。适合快速比较多组数据的集中趋势、离散程度和异常值。

箱线图方法:

python 复制代码
def boxplot(
    data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
    orient=None, color=None, palette=None, saturation=.75, fill=True,
    dodge="auto", width=.8, gap=0, whis=1.5, linecolor="auto", linewidth=None,
    fliersize=None, hue_norm=None, native_scale=False, log_scale=None, formatter=None,
    legend="auto", ax=None, **kwargs
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,支持列名直接引用变量。
x/y vector or str None 分类变量(xy)和数值变量(对应另一个轴),确定箱线图的方向。
hue vector or str None 分组变量,按类别绘制多个箱体(同一分类下),细化组内差异。
dodge bool/str 'auto' 当使用hue时,是否将箱体沿分类轴分开('auto'自动判断,True强制分开)。
whis float 1.5 箱须长度的倍数(whis×IQR),控制离群点的判断阈值。
width float 0.8 箱体的宽度比例。
fliersize float None 离群点的大小。
order/hue_order list None 指定分类变量或hue的类别展示顺序。

5. 小提琴图

小提琴图(violin plot)结合了箱线图和核密度图的特点,通过对称的"小提琴"形状展示数值变量在分类下的概率密度分布(宽度代表密度),内部可添加箱线图或四分位线,既呈现分布形态(如单峰/多峰),又展示统计分位数,适合复杂分布的组间对比。

小提琴图方法:

python 复制代码
def violinplot(
    data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
    orient=None, color=None, palette=None, saturation=.75, fill=True,
    inner="box", split=False, width=.8, dodge="auto", gap=0,
    linewidth=None, linecolor="auto", cut=2, gridsize=100,
    bw_method="scott", bw_adjust=1, density_norm="area", common_norm=False,
    hue_norm=None, formatter=None, log_scale=None, native_scale=False,
    legend="auto", scale=deprecated, scale_hue=deprecated, bw=deprecated,
    inner_kws=None, ax=None, **kwargs,
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,支持列名直接引用变量。
x/y vector or str None 分类变量(xy)和数值变量(对应另一个轴),确定小提琴的方向。
hue vector or str None 分组变量,按类别区分小提琴的颜色或结构。
inner str 'box' 小提琴内部的统计标记: • 'box':箱线图(默认); • 'quartile':四分位线; • 'point'/'stick':点或线标记样本。
split bool False hue为二分类时,是否将小提琴从中间分开(左右分别对应两个类别)。
bw_method/bw_adjust str/float 'scott'/1 核密度估计的带宽方法('scott'/'silverman')和调整系数(>1更平滑)。
density_norm str 'area' 密度归一化方式: • 'area':每个小提琴总面积为1; • 'count':面积与样本量成正比; • 'width':最大宽度统一。
order/hue_order list None 指定分类变量或hue的类别展示顺序。

6. 柱形图

柱形图(bar plot)通过矩形条的高度展示数值变量在分类下的汇总统计量(如均值、中位数),并附带误差线(如置信区间),适合比较不同分类的中心趋势差异。矩形条的长度代表统计量大小,误差线反映结果的不确定性。

柱形图方法:

python 复制代码
def barplot(
    data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
    estimator="mean", errorbar=("ci", 95), n_boot=1000, seed=None, units=None,
    weights=None, orient=None, color=None, palette=None, saturation=.75,
    fill=True, hue_norm=None, width=.8, dodge="auto", gap=0, log_scale=None,
    native_scale=False, formatter=None, legend="auto", capsize=0, err_kws=None,
    ci=deprecated, errcolor=deprecated, errwidth=deprecated, ax=None, **kwargs,
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,支持列名直接引用变量。
x/y vector or str None 分类变量(xy)和数值变量(对应另一个轴),确定柱形的方向。
hue vector or str None 分组变量,按类别绘制多个柱形(同一分类下),细化组内差异。
estimator callable 'mean' 汇总统计函数(如np.mean计算均值,np.median计算中位数)。
errorbar str/tuple ('ci', 95) 误差线类型: • ('ci', 95):95%置信区间(默认); • 'sd':标准差; • None:不显示误差线。
width float 0.8 柱形的宽度比例。
dodge bool/str 'auto' 当使用hue时,是否将柱形沿分类轴分开(避免重叠)。
capsize float 0 误差线顶端/底端的横线长度。
order/hue_order list None 指定分类变量或hue的类别展示顺序。

7. 点图

点图(point plot)用点标记数值变量在分类下的汇总统计量(如均值),并通过误差线展示不确定性,同时可添加连线连接相关组别(如同一hue分类),强调组间趋势或差异。适合突出中心趋势的比较,尤其适用于多组时序或有序分类数据。

点图方法:

python 复制代码
def pointplot(
    data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
    estimator="mean", errorbar=("ci", 95), n_boot=1000, seed=None, units=None,
    weights=None, color=None, palette=None, hue_norm=None, markers=default,
    linestyles=default, dodge=False, log_scale=None, native_scale=False,
    orient=None, capsize=0, formatter=None, legend="auto", err_kws=None,
    ci=deprecated, errwidth=deprecated, join=deprecated, scale=deprecated,
    ax=None, **kwargs,
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,支持列名直接引用变量。
x/y vector or str None 分类变量(xy)和数值变量(对应另一个轴),确定点的分布方向。
hue vector or str None 分组变量,按类别用不同颜色/标记的点区分,连线可连接同hue组别。
estimator callable 'mean' 汇总统计函数(如均值、中位数)。
errorbar str/tuple ('ci', 95) 误差线类型(同柱形图,如95%置信区间、标准差)。
markers list default 不同hue组的点标记样式(如['o', 's']表示圆圈、正方形)。
linestyles list default 不同hue组的连线样式(如['-', '--']表示实线、虚线)。
dodge bool False 当使用hue时,是否将点沿分类轴错开(避免重叠)。
capsize float 0 误差线顶端/底端的横线长度。

8. 计数图

计数图(count plot)是一种特殊的柱形图,用于统计每个分类下的样本数量(频数),通过柱形高度展示不同类别的观测值个数,无需指定数值变量,直接对分类变量的水平进行计数,适合快速了解分类数据的分布频率。

计数图方法:

python 复制代码
def countplot(
    data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
    orient=None, color=None, palette=None, saturation=.75, fill=True, hue_norm=None,
    stat="count", width=.8, dodge="auto", gap=0, log_scale=None, native_scale=False,
    formatter=None, legend="auto", ax=None, **kwargs
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,支持列名直接引用变量。
x/y vector or str None 待计数的分类变量(x为水平柱形,y为垂直柱形)。
hue vector or str None 二级分类变量,按类别对柱形分组着色,展示交叉频数。
stat str 'count' 统计量类型(目前仅支持'count',即频数)。
width float 0.8 柱形的宽度比例。
dodge bool/str 'auto' 当使用hue时,是否将柱形沿分类轴分开(避免重叠)。
order/hue_order list None 指定分类变量或hue的类别展示顺序。

三、矩阵型绘图

1. 热力图

热力图(heatmap)通过颜色深浅重度直观展示矩阵数据的数值大小,常用于呈现变量间的相关性(如相关系数矩阵)、混淆矩阵或多维数据的分布规律。颜色越深(或越亮)代表数值越大,能快速识别数据中的高值区、低值区及整体模式,是探索变量关联和数据密集程度的有效工具。

热力图方法:

python 复制代码
def heatmap(
    data, *, vmin=None, vmax=None, cmap=None, center=None, robust=False,
    annot=None, fmt=".2g", annot_kws=None, linewidths=0, linecolor="white",
    cbar=True, cbar_kws=None, cbar_ax=None, square=False, xticklabels="auto",
    yticklabels="auto", mask=None, ax=None, **kwargs
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame/ndarray - 输入的矩阵数据(行和列代表类别或变量,值为待可视化的数值)。
vmin/vmax float None 颜色映射的最小值和最大值,超出范围的数值将被截断到边界。
cmap str/list None 颜色映射方案(如'viridis''coolwarm''RdBu'),控制热力图的配色风格。
center float None 颜色映射的中心值(用于对称数据,如相关系数矩阵,使正负值颜色区分更明显)。
annot bool None 是否在热力图单元格中显示数值(True显示,False不显示)。
fmt str '.2g' 数值的格式化字符串(如'd'整数、'.1f'保留1位小数),仅当annot=True时生效。
linewidths float 0 单元格之间的间隔线宽度(>0时添加分隔线,增强网格感)。
cbar bool True 是否显示颜色条(用于解释颜色与数值的对应关系)。
square bool False 是否强制单元格为正方形(使行列比例一致,增强美观性)。
mask ndarray None 布尔矩阵,True对应的单元格将被隐藏(用于突出显示部分数据,如只展示上三角相关矩阵)。
xticklabels/yticklabels str/list/bool 'auto' 是否显示x轴/y轴标签:'auto'自动判断,False不显示,列表指定自定义标签。

2. 聚类图

聚类图(clustermap)结合了热力图和层次聚类分析,在展示矩阵数据的同时,通过行和列的聚类树(dendrogram)展示变量或样本的相似性结构。它会根据数据相似度对行和列进行重新排序,使相似的类别聚集在一起,便于发现数据中的自然分组和聚类模式,常用于基因表达、样本分类等复杂数据的分析。

聚类图方法:

python 复制代码
def clustermap(
    data, *, pivot_kws=None, method="average", metric="euclidean",
    z_score=None, standard_scale=None, figsize=None, cbar_kws=None, row_cluster=True,
    col_cluster=True, row_linkage=None, col_linkage=None, row_colors=None,
    col_colors=None, mask=None, dendrogram_ratio=(.1, .2),
    cbar_pos=(.02, .8, .05, .18), tree_kws=None, ax=None, **kwargs
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame/ndarray - 输入的矩阵数据(行和列代表样本或变量,值为待分析的数值)。
method str 'average' 层次聚类的链接方法(计算类间距离的方式): • 'average':平均距离(默认); • 'single':最短距离; • 'complete':最长距离; • 'ward':方差最小化(适用于连续数据)。
metric str 'euclidean' 距离度量方法(计算样本/变量间的相似度): • 'euclidean':欧氏距离(默认); • 'correlation':相关系数距离; • 'cityblock':曼哈顿距离等。
z_score int/None None 是否对行(z_score=0)或列(z_score=1)进行标准化(将数据转换为z分数,消除量纲影响)。
row_cluster/col_cluster bool True 是否对行(row_cluster)或列(col_cluster)进行聚类(False时不聚类,保持原始顺序)。
row_linkage/col_linkage ndarray None 预计算的行/列聚类链接矩阵(用于复现特定聚类结果,无需重新计算)。
row_colors/col_colors list/Series None 行/列的分组颜色标签(在聚类树旁添加颜色条,标记预设分组,增强聚类解释性)。
dendrogram_ratio tuple (.1, .2) 聚类树(行树, 列树)占整个图表的高度/宽度比例。
cbar_pos tuple (.02, .8, .05, .18) 颜色条的位置和大小((left, bottom, width, height),相对坐标系)。
mask ndarray None 布尔矩阵,True对应的单元格将被隐藏(同热力图)。

四、关系型绘图

1. 关系图

关系图用于探索两个或多个变量之间的关联模式,通过可视化展示变量间的相关性(如线性、非线性、正相关、负相关)。Seaborn 中的 sns.relplot() 是关系可视化的高级接口,支持通过 kind 参数指定具体类型(如散点图、折线图),并集成分面功能(按行/列拆分子图),可灵活添加多维度信息(颜色、大小、形状),适合多变量关系的系统性探索。

关系图方法:

python 复制代码
def relplot(
    data=None, *,
    x=None, y=None, hue=None, size=None, style=None, units=None, weights=None,
    row=None, col=None, col_wrap=None, row_order=None, col_order=None,
    palette=None, hue_order=None, hue_norm=None,
    sizes=None, size_order=None, size_norm=None,
    markers=None, dashes=None, style_order=None,
    legend="auto", kind="scatter", height=5, aspect=1, facet_kws=None,
    **kwargs
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,x/y/hue等参数可直接使用列名。
x/y vector or str None 待分析的两个核心变量(横轴和纵轴),用于展示基础关系。
hue vector or str None 分组变量,按类别对数据点着色,添加第三维度信息。
size vector or str None 尺寸变量,按数值大小调整数据点的尺寸,添加第四维度信息。
style vector or str None 样式变量,按类别调整数据点的形状或线条样式,添加第五维度信息。
row/col vector or str None 分面变量,按类别将图拆分为多行(row)或多列(col)子图,实现多维度对比。
kind str 'scatter' 绘图类型: • 'scatter':散点图(默认); • 'line':折线图。
palette str/list/dict None 用于hue分组的调色板。
sizes list/tuple None 尺寸变量的范围(如(10, 200)表示最小/最大点的大小)。
markers list/bool None 样式变量对应的标记符号(如['o', 's']表示圆圈、正方形)。
col_wrap int None col分面时,指定每行最多显示的子图数量(自动换行)。
height/aspect float 5/1 单个子图的高度(height)和宽高比(aspect,宽度=height×aspect)。

2. 散点图

散点图(scatter plot)通过平面上的点(x坐标对应一个变量,y坐标对应另一个变量)展示两个连续变量之间的关系,每个点代表一个样本。它能直观呈现变量间的相关性(如线性趋势、聚类模式)、分布密度及离群点,是探索双变量关系的基础工具。

散点图方法:

python 复制代码
def scatterplot(
    data=None, *,
    x=None, y=None, hue=None, size=None, style=None,
    palette=None, hue_order=None, hue_norm=None,
    sizes=None, size_order=None, size_norm=None,
    markers=True, style_order=None, legend="auto", ax=None,
    **kwargs
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,支持列名直接引用变量。
x/y vector or str None 两个连续变量(横轴和纵轴),构成散点图的基础坐标。
hue vector or str None 分组变量,按类别对点着色,区分不同组的分布模式。
size vector or str None 尺寸变量,按数值大小调整点的大小(数值越大,点越大)。
style vector or str None 样式变量,按类别调整点的形状(如圆圈、三角形)。
palette str/list/dict None 用于hue分组的调色板。
sizes list/tuple None 尺寸范围(如(20, 200)),控制点的大小尺度。
markers list/bool True 样式变量对应的标记符号(True使用默认样式,列表指定自定义符号)。
legend str 'auto' 图例显示方式:'auto'自动判断,'full'显示完整图例,'brief'简化图例,False不显示。

3. 折线图

折线图(line plot)通过连续的线条连接有序数据点,展示变量随时间或另一有序变量的变化趋势,适合呈现数据的动态变化(如时序数据)或分组趋势对比。可通过误差线展示数据的不确定性(如均值的置信区间),增强趋势的可靠性表达。

折线图方法:

python 复制代码
def lineplot(
    data=None, *,
    x=None, y=None, hue=None, size=None, style=None, units=None, weights=None,
    palette=None, hue_order=None, hue_norm=None,
    sizes=None, size_order=None, size_norm=None,
    dashes=True, markers=None, style_order=None,
    estimator="mean", errorbar=("ci", 95), n_boot=1000, seed=None,
    orient="x", sort=True, err_style="band", err_kws=None,
    legend="auto", ci="deprecated", ax=None, **kwargs
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,支持列名直接引用变量。
x/y vector or str None x通常为有序变量(如时间),y为随其变化的数值变量,构成折线的横纵轴。
hue/size/style vector or str None 分组变量,分别通过颜色、线条粗细、线条样式区分不同组的趋势。
estimator callable 'mean' 对同一x值对应的多个y值的汇总函数(如np.mean计算均值,np.median计算中位数)。
errorbar str/tuple ('ci', 95) 误差线类型: • ('ci', 95):95%置信区间(默认); • 'sd':标准差; • None:不显示误差线。
err_style str 'band' 误差的展示样式:'band'为填充带(默认),'bars'为误差线。
sort bool True 是否按x值排序后绘制折线(False保留原始顺序,适合非时序的有序数据)。
dashes list/bool True 不同style组的线条样式(True使用默认虚线/实线,列表指定自定义样式如['-', '--'])。
markers list/bool None 线条上的数据点标记(None默认不显示,列表指定符号如['o', 's'])。

五、回归型绘图

1. 回归图

回归图(regression plot)用于展示两个连续变量之间的线性或非线性关系,并通过拟合回归线直观呈现变量间的趋势,同时可添加置信区间展示模型的不确定性。Seaborn 中的 sns.regplot() 是绘制回归图的基础函数,支持简单线性回归、多项式回归、逻辑回归等多种模型,适合快速探索变量间的关联强度和趋势方向。

回归图方法:

python 复制代码
def regplot(
    data=None, *, x=None, y=None,
    x_estimator=None, x_bins=None, x_ci="ci",
    scatter=True, fit_reg=True, ci=95, n_boot=1000, units=None,
    seed=None, order=1, logistic=False, lowess=False, robust=False,
    logx=False, x_partial=None, y_partial=None,
    truncate=True, dropna=True, x_jitter=None, y_jitter=None,
    label=None, color=None, marker="o",
    scatter_kws=None, line_kws=None, ax=None
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,x/y可直接使用列名。
x/y vector or str None 两个连续变量(横轴和纵轴),用于拟合回归关系。
scatter bool True 是否绘制散点图(原始数据点)。
fit_reg bool True 是否拟合回归线(False时仅显示散点)。
ci int 95 回归线的置信区间水平(如95表示95%置信区间,None不显示)。
order int 1 多项式回归的阶数(1为线性回归,2为二次曲线,以此类推)。
logistic bool False 是否拟合逻辑回归(适用于y为二元变量的情况)。
lowess bool False 是否使用局部加权回归(LOWESS)拟合非线性趋势(适合复杂非线性关系)。
robust bool False 是否使用稳健回归(减少离群点对回归线的影响)。
x_jitter/y_jitter float None x/y轴数据添加随机抖动(避免点重叠,增强散点图可读性)。
truncate bool True 是否将回归线截断在数据范围内(False时延伸至坐标轴边界)。
scatter_kws/line_kws dict None 传递给散点(scatter_kws)或回归线(line_kws)的样式参数(如颜色、大小)。

2. 线性模型图

线性模型图(lmplot)是在回归图基础上扩展的高级函数,支持按分组(hue)或分面(row/col)绘制多个回归模型,同时展示不同组别或条件下的变量关系差异。它集成了回归分析与分面可视化,适合多维度探索变量间的线性或非线性关联,尤其适用于比较不同群体的回归趋势。

线性模型图方法:

python 复制代码
def lmplot(
    data, *,
    x=None, y=None, hue=None, col=None, row=None,
    palette=None, col_wrap=None, height=5, aspect=1, markers="o",
    sharex=None, sharey=None, hue_order=None, col_order=None, row_order=None,
    legend=True, legend_out=None, x_estimator=None, x_bins=None,
    x_ci="ci", scatter=True, fit_reg=True, ci=95, n_boot=1000,
    units=None, seed=None, order=1, logistic=False, lowess=False,
    robust=False, logx=False, x_partial=None, y_partial=None,
    truncate=True, x_jitter=None, y_jitter=None, scatter_kws=None,
    line_kws=None, facet_kws=None,
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame - 输入的长格式DataFrame,变量可通过列名指定。
x/y vector or str None 两个连续变量,作为回归模型的自变量和因变量。
hue vector or str None 分组变量,按类别对数据点和回归线着色,区分不同组的回归趋势。
row/col vector or str None 分面变量,按类别将图拆分为多行(row)或多列(col)子图,每个子图对应一组回归模型。
col_wrap int None col分面时,指定每行最多显示的子图数量(自动换行)。
height/aspect float 5/1 单个子图的高度(height)和宽高比(aspect,宽度=height×aspect)。
markers str/list 'o' 不同hue组的散点标记样式(如['o', 's']表示圆圈、正方形)。
sharex/sharey bool None 分面时是否共享x轴(sharex)或y轴(sharey)刻度。
order/logistic/lowess regplot,分别控制回归阶数、逻辑回归、局部加权回归。
scatter_kws/line_kws dict None 传递给散点或回归线的样式参数(如scatter_kws={'alpha': 0.5}设置透明度)。
facet_kws dict None 传递给分面函数的额外参数(如控制子图间距)。

六、多图网格

1. 分面网格

分面网格(FacetGrid)是 Seaborn 中用于创建多子图布局的基础工具,通过将数据按一个或多个分类变量拆分(行 row 或列 col),在网格中生成多个子图,每个子图对应一个分组的数据。它支持灵活设置子图共享坐标轴、尺寸比例、配色等,是实现多维度数据对比可视化的核心组件,常与映射函数(如 map())结合绘制具体图表。

分面网格方法(FacetGrid()类):

python 复制代码
    def __init__(
        self, data, *,
        row=None, col=None, hue=None, col_wrap=None,
        sharex=True, sharey=True, height=3, aspect=1, palette=None,
        row_order=None, col_order=None, hue_order=None, hue_kws=None,
        dropna=False, legend_out=True, despine=True,
        margin_titles=False, xlim=None, ylim=None, subplot_kws=None,
        gridspec_kws=None,
    )

核心参数说明:

参数 类型 默认值 说明
data DataFrame - 输入的长格式DataFrame,作为分面的数据源。
row/col vector or str None 用于拆分行/列子图的分类变量(每个类别对应一行/列子图)。
hue vector or str None 分组变量,在每个子图内部按类别着色,细化组内差异。
col_wrap int None 当仅按col分面时,指定每行最多显示的子图数量(自动换行)。
sharex/sharey bool True 子图是否共享x轴(sharex)或y轴(sharey)刻度(True共享,False独立)。
height/aspect float 3/1 单个子图的高度(height)和宽高比(aspect,宽度=height×aspect)。
row_order/col_order list None 指定row/col变量的类别展示顺序(默认按数据中出现的顺序)。
legend_out bool True 是否将hue的图例放置在子图网格外部(避免占用子图空间)。
despine bool True 是否移除子图顶部和右侧的边框(美化图表)。
margin_titles bool False 是否在子图网格的边缘显示行/列标题(适合长标题)。
xlim/ylim tuple None 所有子图的x/y轴范围(如xlim=(0, 10))。

2. 配对网格

配对网格(PairGrid)专为多变量数据的两两关系可视化设计,通过创建一个正方形网格,对角线展示单变量分布(如直方图、核密度图),非对角线展示双变量关系(如散点图),适合快速探索数据集内所有变量间的关联模式。支持按hue分组着色,突出不同类别的差异。

配对网格方法(PairGrid()类):

python 复制代码
    def __init__(
        self, data, *, hue=None, vars=None, x_vars=None, y_vars=None,
        hue_order=None, palette=None, hue_kws=None, corner=False, diag_sharey=True,
        height=2.5, aspect=1, layout_pad=.5, despine=True, dropna=False,
    )

核心参数说明:

参数 类型 默认值 说明
data DataFrame - 输入的DataFrame,包含待分析的多个变量。
vars list None 指定参与配对分析的变量列表(默认使用所有数值变量)。
x_vars/y_vars list None 分别指定x轴和y轴的变量列表(生成非正方形网格,如x_vars=[A,B], y_vars=[C,D])。
hue vector or str None 分组变量,在所有子图中按类别着色,区分不同组的分布。
corner bool False 是否仅显示网格的下三角部分(避免重复展示对称的双变量关系,节省空间)。
diag_sharey bool True 对角线子图(单变量分布)是否共享y轴刻度(False时独立刻度)。
height/aspect float 2.5/1 单个子图的高度和宽高比(宽度=height×aspect)。
layout_pad float 0.5 子图之间的间距(英寸)。
despine bool True 是否移除子图顶部和右侧的边框。

3. 双变量分布图

双变量分布图用于同时展示两个变量的联合分布特征,中心区域呈现二者的关联模式(如散点、等高线),边缘区域附加各自的单变量分布(如直方图、核密度曲线),兼顾双变量关系和单变量分布的双重信息。Seaborn 的 sns.jointplot() 是绘制此类图表的便捷函数,适合探索两个连续变量的相关性和分布形态。

核密度估计图方法:

python 复制代码
def jointplot(
    data=None, *, x=None, y=None, hue=None, kind="scatter",
    height=6, ratio=5, space=.2, dropna=False, xlim=None, ylim=None,
    color=None, palette=None, hue_order=None, hue_norm=None, marginal_ticks=False,
    joint_kws=None, marginal_kws=None,
    **kwargs
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame None 输入的长格式DataFrame,x/y/hue可直接使用列名。
x/y vector or str None 待分析的两个变量(横轴和纵轴),必须同时指定。
hue vector or str None 分组变量,按类别对数据点着色,区分不同组的联合分布。
kind str 'scatter' 中心区域的绘图类型: • 'scatter':散点图(默认); • 'kde':核密度等高线图; • 'hex':六边形热力图; • 'reg':散点+回归线。
height float 6 整个图表的高度(英寸)。
ratio int 5 中心区域与边缘区域的高度比例(如5表示中心高度是边缘的5倍)。
space float 0.2 中心区域与边缘区域的间距(英寸)。
marginal_ticks bool False 是否在边缘区域显示坐标轴刻度。
joint_kws/marginal_kws dict None 传递给中心区域(joint_kws)或边缘区域(marginal_kws)的样式参数。

4. 配对图

配对图(pair plot)是基于配对网格(PairGrid)的高级接口,自动绘制数据集中所有数值变量的两两关系:对角线为每个变量的单变量分布(如直方图、核密度图),非对角线为两个变量的双变量关系(如散点图),可通过hue分组着色,适合快速概览多变量数据集的分布特征和变量间关联,是探索性数据分析的常用工具。

配对图方法:

python 复制代码
def pairplot(
    data, *,
    hue=None, hue_order=None, palette=None,
    vars=None, x_vars=None, y_vars=None,
    kind="scatter", diag_kind="auto", markers=None,
    height=2.5, aspect=1, corner=False, dropna=False,
    plot_kws=None, diag_kws=None, grid_kws=None, size=None,
)

核心参数说明:

参数 类型 默认值 说明
data DataFrame - 输入的DataFrame,包含待分析的多个变量。
vars list None 指定参与配对分析的变量列表(默认使用所有数值变量)。
x_vars/y_vars list None 分别指定x轴和y轴的变量(生成非对称配对图)。
hue vector or str None 分组变量,所有子图按类别着色,区分不同组的分布。
kind str 'scatter' 非对角线子图的双变量关系类型:'scatter'(散点图)或'reg'(回归图)。
diag_kind str 'auto' 对角线子图的单变量分布类型: • 'auto':默认根据hue是否存在选择(有hue用核密度图,否则用直方图); • 'hist':直方图; • 'kde':核密度图; • None:不绘制对角线。
markers list None 不同hue组的散点标记样式(如['o', 's'])。
corner bool False 是否仅显示下三角部分(避免重复,同PairGrid)。
height/aspect float 2.5/1 单个子图的高度和宽高比。
plot_kws/diag_kws dict None 传递给非对角线(plot_kws)或对角线(diag_kws)子图的样式参数。
相关推荐
zx52011320 小时前
pyinstaller 打包报错hook-matplotlib.backends.py
matplotlib·hook-matplotlib·.backends
一晌小贪欢3 天前
【Python数据分析】数据分析与可视化
开发语言·python·数据分析·数据可视化·数据清洗
招风的黑耳4 天前
Axure可视化大屏原型模板库:学习设计/提高效率/快速可视化
学习·axure·数据可视化·大屏设计
geobuilding7 天前
将大规模shp白模贴图转3dtiles倾斜摄影,并可单体化拾取建筑
算法·3d·智慧城市·数据可视化·贴图
小白跃升坊8 天前
数据分析报表如何选?详解 DataEase 四大表格:明细表、汇总表、透视表与热力图的适用场景与选择策略
数据挖掘·数据分析·开源软件·数据可视化·dataease
数据科学项目实践9 天前
Matplotlib 简单教程 3:坐标轴\边框设置
数据可视化
IT小哥哥呀11 天前
Python实用技巧:批量处理Excel数据并生成销售报表(含实战案例)
python·pandas·数据可视化·数据处理·报表生成·excel自动化·办公神器
大飞码农12 天前
📊 开源了一个 Git 代码统计神器,解决了团队代码量统计的 N 个痛点
git·数据可视化
Serendipity_Carl12 天前
爬虫数据清洗可视化链家房源
python·pandas·matplotlib