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)子图的样式参数。
相关推荐
柳杉2 天前
Three.js × Blender:从建模到 Web 3D 的完整工作流深度解析
前端·javascript·数据可视化
Highcharts.js2 天前
在React中使用图表库时,优先选择组件化方案可以降低开发复杂度
前端·javascript·react.js·数据可视化·highcharts
数据科学小丫3 天前
Power BI 使用
数据分析·数据可视化·powerbi
MediaTea3 天前
Matplotlib 常用函数手册
matplotlib
极光代码工作室3 天前
基于Hadoop的日志数据分析系统设计
大数据·hadoop·python·数据分析·数据可视化
一颗烂土豆6 天前
拒绝 rem 计算!Vue3 大屏适配,我用 vfit 一行代码搞定
vue.js·响应式设计·数据可视化
技术民工之路6 天前
Gephi网络(图)分析与可视化工具
大数据·数据可视化
爱学习的程序媛7 天前
【Web前端】蚂蚁AntV:企业级数据可视化全栈方案
前端·信息可视化·前端框架·web·数据可视化
数字冰雹8 天前
数字孪生携手AIGC:一个指令,一座智慧城市的全景智能即刻生成
人工智能·ai·aigc·智慧城市·数字孪生·数据可视化
badhope8 天前
Matplotlib实战30例:全类型图表代码库
人工智能·python·plotly·github·matplotlib