当前位置: 首页 > news >正文

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

文章目录

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


一、分布型绘图

1. 分布图

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

分布图方法:

def displot(data=None, *,# Vector variablesx=None, y=None, hue=None, row=None, col=None, weights=None,# Other plot parameterskind="hist", rug=False, rug_kws=None, log_scale=None, legend=True,# Hue-mapping parameterspalette=None, hue_order=None, hue_norm=None, color=None,# Faceting parameterscol_wrap=None, row_order=None, col_order=None,height=5, aspect=1, facet_kws=None,**kwargs,
)

核心参数说明:

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

2. 直方图

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

直方图方法:

def histplot(data=None, *,# Vector variablesx=None, y=None, hue=None, weights=None,# Histogram computation parametersstat="count", bins="auto", binwidth=None, binrange=None,discrete=None, cumulative=False, common_bins=True, common_norm=True,# Histogram appearance parametersmultiple="layer", element="bars", fill=True, shrink=1,# Histogram smoothing with a kernel density estimatekde=False, kde_kws=None, line_kws=None,# Bivariate histogram parametersthresh=0, pthresh=None, pmax=None, cbar=False, cbar_ax=None, cbar_kws=None,# Hue mapping parameterspalette=None, hue_order=None, hue_norm=None, color=None,# Axes informationlog_scale=None, legend=True, ax=None,# Other appearance keywords**kwargs,
)

核心参数说明:

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

3. 核密度估计图

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

核密度估计图方法:

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,
)

核心参数说明:

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

4. 地毯图

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

地毯图方法:

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
)

核心参数说明:

参数类型默认值说明
dataDataFrameNone输入的长格式DataFrame,x/y/hue可直接使用列名。
x/yvector or strNone待展示的变量:单变量时指定x(在x轴绘制竖线)或y(在y轴绘制横线);双变量时同时指定(在坐标点位置标记)。
huevector or strNone分组变量,按类别对地毯线/点着色,区分不同组的数据分布。
heightfloat0.025地毯线的长度(相对于坐标轴高度的比例)。
expand_marginsboolTrue是否自动扩展坐标轴边缘,避免地毯线与图表边界重叠。
palettestr/list/dictNone用于hue分组的调色板。
axmatplotlib AxesNone指定绘图的坐标轴对象,用于嵌入到其他图表中(如叠加在直方图上)。

5. 经验累积分布函数图

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

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

def ecdfplot(data=None, *,# Vector variablesx=None, y=None, hue=None, weights=None,# Computation parametersstat="proportion", complementary=False,# Hue mapping parameterspalette=None, hue_order=None, hue_norm=None,# Axes informationlog_scale=None, legend=True, ax=None,# Other appearance keywords**kwargs,
)

核心参数说明:

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

6. 双变量分布图

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

核密度估计图方法:

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
)

核心参数说明:

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

二、分类型绘图

1. 分类图

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

分类图方法:

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
)

核心参数说明:

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

2. 带状图

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

带状图方法:

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
)

核心参数说明:

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

3. 蜂群图

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

蜂群图方法:

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
)

核心参数说明:

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

4. 箱线图

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

箱线图方法:

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
)

核心参数说明:

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

5. 小提琴图

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

小提琴图方法:

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,
)

核心参数说明:

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

6. 柱形图

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

柱形图方法:

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,
)

核心参数说明:

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

7. 点图

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

点图方法:

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,
)

核心参数说明:

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

8. 计数图

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

计数图方法:

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
)

核心参数说明:

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

三、矩阵型绘图

1. 热力图

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

热力图方法:

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
)

核心参数说明:

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

2. 聚类图

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

聚类图方法:

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
)

核心参数说明:

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

四、关系型绘图

1. 关系图

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

关系图方法:

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
)

核心参数说明:

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

2. 散点图

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

散点图方法:

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
)

核心参数说明:

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

3. 折线图

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

折线图方法:

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
)

核心参数说明:

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

五、回归型绘图

1. 回归图

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

回归图方法:

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
)

核心参数说明:

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

2. 线性模型图

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

线性模型图方法:

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,
)

核心参数说明:

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

六、多图网格

1. 分面网格

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

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

    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,)

核心参数说明:

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

2. 配对网格

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

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

    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,)

核心参数说明:

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

3. 双变量分布图

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

核密度估计图方法:

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
)

核心参数说明:

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

4. 配对图

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

配对图方法:

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,
)

核心参数说明:

参数类型默认值说明
dataDataFrame-输入的DataFrame,包含待分析的多个变量。
varslistNone指定参与配对分析的变量列表(默认使用所有数值变量)。
x_vars/y_varslistNone分别指定x轴和y轴的变量(生成非对称配对图)。
huevector or strNone分组变量,所有子图按类别着色,区分不同组的分布。
kindstr'scatter'非对角线子图的双变量关系类型:'scatter'(散点图)或'reg'(回归图)。
diag_kindstr'auto'对角线子图的单变量分布类型:
'auto':默认根据hue是否存在选择(有hue用核密度图,否则用直方图);
'hist':直方图;
'kde':核密度图;
None:不绘制对角线。
markerslistNone不同hue组的散点标记样式(如['o', 's'])。
cornerboolFalse是否仅显示下三角部分(避免重复,同PairGrid)。
height/aspectfloat2.5/1单个子图的高度和宽高比。
plot_kws/diag_kwsdictNone传递给非对角线(plot_kws)或对角线(diag_kws)子图的样式参数。
http://www.dtcms.com/a/613264.html

相关文章:

  • Qt Network 模块中的函数详解
  • 【ros2】ROS2 Python服务端与客户端开发指南
  • 网站页面架构图wordpress指定模板
  • contos7安装dokcer遇到的坑,docker-composer
  • 《中医学基础理论》之藏象学说五脏系统总结详解
  • 鸿蒙PC平台三方库移植实战:以libogg库移植为例(附完整移植流程与工具链配置)
  • dw建网站建站之星好吗
  • 阿里云CentOS环境下Docker使用教程
  • bulk RNA-Seq (4)合并表达矩阵
  • 从零开始写算法——二分-搜索二维矩阵
  • 力扣(LeetCode)100题:73.矩阵置零 54.螺旋矩阵
  • 原型理解从入门到精通
  • 电子商务实验网站建设实训过程出售东西的网站怎么做
  • 做明星网站可以做那些子网页建设网站要用到什么语言
  • 《计算机网络:体系结构》
  • musl libc 与 C 运行时文件(`crt*.o`):技术解析及移植报错问题
  • 前端WebSocket教程,实时通信案例
  • 陪诊陪检系统源码,陪诊小程序,陪诊APP,陪诊服务,家政上门系统,居家护理陪护源码
  • Java 9+模块化系统(JPMS)详解:设计与迁移实践
  • 【计算机网络】考研408 | 数据链路层的“安全卫士”:探秘检错编码之奇偶校验码
  • Oracle EBS 调用标准创建供应商地点包报错处理
  • 第40节:AR基础:Marker识别与跟踪
  • 新能源汽车动力系统在环(HIL)半实物仿真测试台架深度解析
  • 企业BI建议--数据治理平台
  • 锒川市住房和城乡建设局网站公告湖北省建设工程质量安全监督网站
  • 从裂变能力竞争到技术水平竞争:开源AI智能名片链动2+1模式S2B2C商城小程序对微商企业竞争格局的重塑
  • 09-mcp-server案例分享-即梦MCP-Server实战教程-让Claude直接调用AI生图视频能力
  • SpringBoot18-redis的配置
  • PHP 表单 - 必需字段
  • python爬虫入门案例day05:Pexels