100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)

文章目录

  • 一、Seaborn介绍
    • 1.1 介绍
    • 1.2 安装
    • 1.3 风格设置
      • 1.3.1 style(风格)
      • 1.3.2 context(环境设置)
    • 1.4 调色盘设置
    • 1.5 数据集下载
  • 二、Relational plots(关系图)
    • 2.1 scatterplot(散点图)
    • 2.2 lineplot(线图)
    • 2.3 relplot(关系图)
    • 2.4 pairplot(成对关系图)
  • 三、Categorical plots(分类图)
    • 3.1 Categorical scatterplots(分类散点图)
      • 3.1.1 stripplot(分类散点图)
      • 3.1.2 swarmplot(分类蜂群图)
    • 3.2 Categorical distribution plots(分类分布图)
      • 3.2.1 boxplot(箱线图)
      • 3.2.2 violinplot(小提琴图)
    • 3.3 Categorical estimate plots(分类统计图)
      • 3.3.1 barplot(条形图)
      • 3.2.2 countplot(柱状图)
      • 3.3.3 pointplot(点线图)
  • 四、Distribution plots(分布图)
    • 4.1 单变量分布图
      • 4.1.1 distplot(直方图)
      • 4.1.2 kdeplot(核密度图)
    • 4.2 双变量分布图
      • 4.2.2 jointplot(联合图)
  • 五、lmplot(线性回归图)
  • 六、Matrix plots(矩阵图)
    • 6.1 heatmap(热力图)
    • 6.2 clustermap(聚类图)
  • 七、FacetGrid(多个子图)
  • 八、PairGrid(子图网格)
  • 专栏导读
  • 书籍推荐(包邮送书5本)

一、Seaborn介绍

1.1 介绍

Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。

  • Python中的一个制图工具库,可以制作出吸引人的、信息量大的统计图

  • 在Matplotlib上构建,支持numpy和pandas的数据结构可视化。

  • 多个内置主题及颜色主题

  • 可视化单一变量、二维变量用于比较数据集中各变量的分布情况

  • 可视化线性回归模型中的独立变量及不独立变量

Seaborn官网:http://seaborn.pydata.org/index.html

1.2 安装

(1)在cmd执行下面pip命令安装:

pip install Seaborn

(2)导包如下:

import seaborn as sns

1.3 风格设置

seaborn的风格设置主要分为两类,其一是style(风格)设置,二是context(环境)设置。

1.3.1 style(风格)

设置风格的三种方法:

  • set:通用设置接口
  • set_style:风格专用设置接口,设置后全局风格随之改变
  • axes_style:设置当前图(axes级)的风格,同时返回设置后的风格系列参数,支持with关键字用法

风格主要有5种:

  • darkgrid(默认风格)

  • whitegrid

  • dark

  • white

  • ticks

sns.set_style("darkgrid")   # 灰色网格背景(默认风格)
sns.set_style("whitegrid")  # 白色网格背景
sns.set_style("dark")       # 灰色背景
sns.set_style("white")      # 白色背景
sns.set_style("ticks")      # 四周加边框和刻度

100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第1张图片
Seaborn绘制的直方图会自动添加间隔,使得图像更加清晰,相比之下,Matplotlib绘图风格较为简单。此外,不同的Seaborn风格之间主要区别在于绘图背景色的不同,这些风格也提供了更多的可定制化选项和更方便的API,使得绘制高质量的图表变得更加容易和快捷。

1.3.2 context(环境设置)

设置环境的方法也有3种:

  • set:通用设置接口

  • set_context:环境设置专用接口,设置后全局绘图环境随之改变

  • plotting_context:设置当前图(axes级)的绘图环境,同时返回设置后的环境系列参数,支持with关键字用法

绘图环境主要有4种:

  • “notebook”: 默认的上下文,图像尺寸为6.0×4.0英寸,字体大小为11pt;
  • “paper”: 适用于出版物,图像尺寸为8.27×11.69英寸,字体大小为10pt;
  • “talk”: 适用于演讲,图像尺寸为9.0×6.0英寸,字体大小为14pt;
  • “poster”: 适用于海报,图像尺寸为16.53×11.69英寸,字体大小为17pt。
sns.plotting_context("notebook")  # 默认
sns.plotting_context("paper")
sns.plotting_context("talk")
sns.plotting_context("poster")

100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第2张图片

4种默认绘图环境最直观的区别在于字体大小的不同,而其他方面也均略有差异。详细对比下4种绘图环境下的系列参数设置:

100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第3张图片

1.4 调色盘设置

调色盘是一组颜色的序列,用于在多个数据点之间进行区分。Seaborn提供了多种调色盘,可以根据不同的需求来进行选择。下面是Seaborn库调色盘设置的教程。

1、查看Seaborn自带的调色盘
Seaborn自带了多个调色盘,可以通过sns.color_palette()函数来查看。该函数默认返回当前设置的调色盘,也可以通过参数来指定不同的调色盘。

import seaborn as sns
import matplotlib.pyplot as plt

current_palette = sns.color_palette()
sns.palplot(current_palette)

运行结果:
在这里插入图片描述

默认的调色盘有10种颜色。这些颜色都有6种风格。分别是: deep , muted , pastel ,bright, dark, colorblind。这几种风格的颜色不变,主要调整的是亮度和饱和度:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第4张图片
换一个风格看看:

import seaborn as sns
import matplotlib.pyplot as plt

current_palette = sns.color_palette('deep')
sns.palplot(current_palette)

在这里插入图片描述

2、 设置调色盘

在Seaborn中,可以通过sns.set_palette()函数来设置调色盘。该函数接收一个颜色序列作为参数,可以是一个元组、列表或者字符串。

sns.set_palette("husl")

设置前:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第5张图片
设置后:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第6张图片

3、使用调色盘

在Seaborn中,可以通过hue参数来使用调色盘。hue参数用于指定用于分组的列名,然后Seaborn会自动使用调色盘来区分不同的组别。

sns.scatterplot(x="sepal_length", y="sepal_width", hue="species", data=iris)

4、自定义调色盘
如果Seaborn自带的调色盘不能满足我们的需求,我们也可以自定义调色盘。可以通过sns.color_palette()函数来创建自定义调色盘。

my_palette = sns.color_palette(["#F8766D", "#7CAE00", "#00BFC4"])
sns.set_palette(my_palette)

在这里,我们创建了一个包含三种颜色的调色盘,并将其设置为当前调色盘。然后可以在绘图时使用hue参数来使用自定义调色盘。

1.5 数据集下载

官方数据集下载地址这里自行下载后面会使用到): https://github.com/mwaskom/seaborn-data

常用数据集介绍:

  • 1、tips:一个包含餐厅小费数据的数据集,包括总账单金额、小费金额、性别、是否吸烟、日期、时间和用餐人数等信息。

  • 2、iris:一个包含鸢尾花数据的数据集,包括花萼长度、花萼宽度、花瓣长度、花瓣宽度和鸢尾花的种类等信息。

  • 3、titanic:一个包含泰坦尼克号乘客数据的数据集,包括乘客姓名、年龄、性别、船舱等级、票价、是否幸存等信息。

  • 4、flights:一个包含航班数据的数据集,包括年份、月份和乘客数量等信息。

  • 5、fmri:一个包含功能磁共振成像数据的数据集,包括时间、被试编号、区域编号和信号值等信息。

这些数据集可以通过Seaborn直接加载和使用,方便用户进行数据可视化和分析。

二、Relational plots(关系图)

Seaborn模块的Relational plots(关系图)用于探索两个或多个变量之间的关系。它可以帮助我们理解数据中的模式、趋势和异常值。Seaborn模块中的Relational plots包括以下几种:

  • scatterplot(散点图):用于绘制两个变量之间的关系,每个数据点表示为一个点。可以使用不同的颜色和大小来表示第三个变量。

  • lineplot(线图):用于绘制两个变量之间的关系,每个数据点表示为一个点,并使用线条连接它们。

  • relplot(关系图):可以绘制各种关系图,包括散点图、线图、折线图、面积图等。

  • pairplot(成对关系图):用于绘制数据集中每对变量之间的关系,同时显示每个变量的直方图和密度图。

通过使用Seaborn模块的Relational plots,我们可以快速可视化数据集中的多个变量之间的关系,并发现潜在的模式和趋势。

2.1 scatterplot(散点图)

scatterplot(散点图)用于绘制两个变量之间的关系,每个数据点表示为一个点,它可以帮助我们理解两个变量之间的相关性和分布情况。

seaborn.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:指定数据集。
  • x, y:指定x轴和y轴的变量名称或数据。
  • hue:指定一个分类变量,用于对数据点进行分类,可以使用不同的颜色来表示。
  • size:指定一个数值变量,用于控制数据点的大小。
  • style:指定一个分类变量,用于对数据点进行分类,可以使用不同的形状来表示。
  • palette:指定颜色调色板。
  • hue_order:指定分类变量的顺序。
  • hue_norm:指定用于规范化色度的对象。
  • sizes:指定数据点的大小范围。
  • size_order:指定数值变量的顺序。
  • size_norm:指定用于规范化点大小的对象。
  • markers:指定是否使用不同的标记形状来表示数据点。
  • style_order:指定分类变量的顺序。
  • legend:指定是否显示图例,或者指定图例的位置和格式。
  • ax:指定绘图所在的坐标轴。
  • kwargs:其他可选的关键字参数。

其中,x、y、hue、size和style参数是必需的,其他参数都是可选的。

(1)先来个简单的散点图看看效果:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid") # seaborn默认风格

# 创建数据
x = np.random.normal(size=1000)
y = np.random.normal(size=1000)

# 绘制散点图
sns.scatterplot(x=x, y=y)

# 显示图形
plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第7张图片

(2)设置其他参数绘制更好的散点图:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid") # seaborn默认风格

# 创建数据
x = np.random.normal(size=1000)
y = np.random.normal(size=1000)
z = np.random.choice(['A', 'B', 'C'], size=1000)

# 绘制散点图
sns.scatterplot(x=x, y=y, hue=z, style=z, markers=['*'], palette='Set2')

# 显示图形
plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第8张图片

在scatterplot()函数中,markers参数用于设置散点的形状,palette参数用于设置颜色方案。可以根据实际需求选择合适的参数来绘制出更加美观的散点图。

2.2 lineplot(线图)

Seaborn模块中的lineplot函数用于绘制线图,可以用于展示数据的趋势和变化。

seaborn.lineplot(
    data=None, *,
    x=None, y=None, hue=None, size=None, style=None, units=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
)

常用参数说明:

  • x, y:指定绘制线图的x轴和y轴数据。

  • data:指定绘图数据集。

  • hue:指定分类变量,根据该变量的不同取值,绘制不同颜色的线条。

  • style:指定线条的样式。

  • markers:指定线条上的标记点的样式。

  • dashes:指定线条的虚线样式。

(1)这里我们导入官方的数据玩玩,然后存到本地电脑的某个位置, 再读取文件, 这是需要加上 data_home 这个参数就行了:

官方数据下载地址这里自行下载后面会使用到): https://github.com/mwaskom/seaborn-data

import seaborn as sns
import matplotlib.pyplot as plt

# 这里需要修改你下载数据的保存路径
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")

sns.lineplot(x='day', y='total_bill', hue='sex', style='sex', data=data)

plt.show()

运行结果:

100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第9张图片

(2)设置其他参数整点复杂的:

import seaborn as sns
import matplotlib.pyplot as plt

data = sns.load_dataset('fmri', data_home="D:\seaborn-data-master")

sns.lineplot(x="timepoint", y="signal",hue="event", style="event",markers=True, dashes=False, data=data)

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第10张图片

2.3 relplot(关系图)

Seaborn 模块中的 relplot() 函数可以用于绘制多个变量之间的关系图。它可以帮助我们快速地进行多变量分析和可视化。relplot() 函数可以接受多种参数来控制绘图的样式和数据。

seaborn.relplot(
    data=None, *,
    x=None, y=None, hue=None, size=None, style=None, units=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
)

常用参数说明(其他kind参数最重要):

  • x 和 y:指定用于绘制图形的变量;
  • data:指定数据集;
  • hue:指定分类变量,用于按照不同类别对数据进行分组;
  • col 和 row:指定用于分组的列名,用于在多个子图中绘制不同的数据子集;
  • kind:指定图形类型,可以是 scatter(散点图)或 line(线图);默认为散点图
  • style:指定样式变量,用于按照不同样式对数据进行分组;
  • size:指定点的大小变量,用于按照不同大小对数据进行分组;
  • palette:用于控制颜色的调色板。

(1)默认情况散点图:

import seaborn as sns
import matplotlib.pyplot as plt

data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")

# 默认情况散点图
sns.relplot(x='total_bill', y='tip', hue='smoker', style='time', size='size', data=data)

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第11张图片
(2)设置kind='line'绘制折线图

import seaborn as sns
import matplotlib.pyplot as plt

data = sns.load_dataset('fmri', data_home="D:\seaborn-data-master")

# 设置kind='line'绘制折线图
# 设置hue为event绘制不同的颜色
# 设置col为region个数来绘制指定个数的图
# 设置style为event修改线条的样式
sns.relplot(x="timepoint",y="signal",kind="line",hue="event",col="region",style="event",data=data)

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第12张图片

2.4 pairplot(成对关系图)

Seaborn 模块中的 pairplot() 函数可以用于绘制多个变量之间的成对关系图。它可以帮助我们快速地进行多变量分析和可视化。

seaborn.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:指定数据集;
  • hue:指定分类变量,用于按照不同类别对数据进行分组;
  • vars:指定用于绘制图形的变量;
  • diag_kind:指定对角线上的图形类型;
  • kind:指定非对角线上的图形类型;
  • palette:用于控制颜色的调色板
import seaborn as sns
import matplotlib.pyplot as plt

data = sns.load_dataset('iris', data_home="D:\seaborn-data-master")

sns.pairplot(data, hue='species')

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第13张图片

三、Categorical plots(分类图)

3.1 Categorical scatterplots(分类散点图)

3.1.1 stripplot(分类散点图)

Seaborn库中的stripplot(分类散点图)是一种常用的Categorical plot(分类图),用于可视化单个分类变量的值分布。它可以显示每个数据点的位置,并且可以通过jitter参数添加一些随机噪声,以避免数据点之间的重叠。

seaborn.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="gray", linewidth=0,
    hue_norm=None, native_scale=False, formatter=None, legend="auto",
    ax=None, **kwargs
)

常用参数说明:

  • x, y:指定要绘制的变量名,可以是数据集中的列名或列索引。

  • hue:指定另一个分类变量的变量名,可以通过不同的颜色来区分。

  • data:指定要使用的数据集。

  • jitter:控制数据点的随机噪声程度,可以是True或False,也可以是一个小数,表示噪声的大小。

  • dodge:当hue参数存在时,控制是否将不同hue值分开绘制。

  • order:指定x变量的顺序。

  • hue_order:指定hue变量的顺序。

  • palette:指定颜色调色板。

  • size, edgecolor, linewidth:控制数据点的大小、边缘颜色和边缘线宽。

  • alpha:控制数据点的透明度。

  • orient:控制绘制方向,可以是"v"(垂直)或"h"(水平)。

  • marker:控制数据点的形状,可以是"."(圆点)、“o”(实心圆)等。

  • ax:指定要绘制的Axes对象。

  • kwargs:其他可选参数,如标签、标题等。

(1)普通绘图

import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")

sns.stripplot(x="day", y="total_bill", data=data)

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第14张图片

(2)多加几个参数试试效果

import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")

sns.stripplot(x="day", y="total_bill", hue="smoker",data=data, jitter=True,palette="Set2", dodge=True)

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第15张图片

(3)修改为横向散点图,只需将x、y的值对调:

import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")

sns.stripplot(x="total_bill", y="day", hue="smoker",data=data, jitter=True,palette="Set2", dodge=True)

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第16张图片

3.1.2 swarmplot(分类蜂群图)

Seaborn库中的swarmplot(分布蜂群图)是一种常用的Categorical plot(分类图),用于可视化单个分类变量的值分布。与stripplot(分类散点图)类似,它可以显示每个数据点的位置,但是它们会自动调整点的位置,使它们不会重叠。

seaborn.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="gray", linewidth=0, hue_norm=None,
    native_scale=False, formatter=None, legend="auto", warn_thresh=.05,
    ax=None, **kwargs
)

参数swarmplot和stripplot参数上基本一致,少了jitter,因为它显示的是分布密度,不需要添加抖动项。

(1)普通绘图:

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")

sns.swarmplot(x="day",y="total_bill",data=data)

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第17张图片

(2)增加几个参数试试:

import seaborn as sns
sns.set(style="darkgrid") #seaborn默认风格

data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")

sns.swarmplot(x="day",y="total_bill", hue="smoker",data=data, palette="Set2", dodge=True)

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第18张图片

3.2 Categorical distribution plots(分类分布图)

3.2.1 boxplot(箱线图)

Seaborn模块中的boxplot函数绘制箱线图,是一种用于展示一组数据分布情况的图表。箱线图的主要组成部分是箱体和须线。箱体表示数据的中间50%取值范围,也称为四分位数间距(IQR),即数据的下四分位数(Q1)和上四分位数(Q3)之间的区域。箱体中的中位数(median)用一条线表示。须线表示箱体之外的数据点,其中最长的线通常代表最大值和最小值,但也可以根据用户需要来定义。箱线图可以用于比较不同组之间的数据分布情况,也可以用于检测数据中的异常值。

seaborn.boxplot(
    data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
    orient=None, color=None, palette=None, saturation=.75, width=.8,
    dodge=True, fliersize=5, linewidth=None, whis=1.5, ax=None,
    **kwargs
)

常用参数说明:

  • x, y:箱线图的横纵坐标,x和y必须至少指定一个。
  • data:使用的数据集。
  • hue:按照某个分类变量对数据进行分组,生成多个箱线图。
  • order, hue_order:指定x或hue的分类变量的顺序。
  • orient:指定箱线图的方向,可以是"v"(垂直)或"h"(水平)。
  • color, palette:指定箱线图的颜色,可以是单个颜色或调色板。
  • linewidth, width:指定箱线图的线宽和宽度。
  • notch:是否在箱体中间绘制凹陷,用于比较两个组的中位数是否显著不同。
  • showfliers:是否显示异常值,默认为True。
  • whis:指定须线的长度,默认为1.5,表示须线长度为箱体高度的1.5倍。
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")

sns.boxplot(x="day", y="total_bill", data=data)

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第19张图片

3.2.2 violinplot(小提琴图)

Seaborn 库中的 violinplot(小提琴图)是一种用于可视化数值数据分布的图形。它类似于箱线图,但是它还可以显示数据分布的密度。

小提琴图的主要组成部分是一个中央的箱形图,两侧是对称的密度曲线。这些密度曲线可以用来比较不同组之间的数据分布。小提琴图还可以用不同的颜色和样式来区分不同的类别或分组。

小提琴图可以用于比较多个变量之间的分布,也可以用于比较同一变量在不同类别或分组之间的分布。它可以帮助我们识别数据中的异常值、偏态分布和多峰分布等特征。

seaborn.violinplot(
    data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
    bw="scott", cut=2, scale="area", scale_hue=True, gridsize=100,
    width=.8, inner="box", split=False, dodge=True, orient=None,
    linewidth=None, color=None, palette=None, saturation=.75,
    ax=None, **kwargs,
)

常用参数说明:

  • x, y:数据集,x 和 y 同时存在时,会绘制一个二维小提琴图,x 或 y 可以是数据集的列名或索引。
  • hue:按照指定的分类变量进行分组,绘制不同颜色的小提琴图。
  • data:数据集,可以是 pandas DataFrame、numpy array、或者其他形式的数据集。
  • split:当 hue 参数存在时,是否分割小提琴图。
  • scale:确定小提琴图的宽度,可以是“area”(面积相同)或“count”(按照样本数量缩放)。
  • inner:控制小提琴图内部的绘制方式,可以是“box”(绘制箱形图)、“quartile”(绘制四分位数线)、“point”(绘制散点图)、“stick”(绘制棍状图)。
  • bw:控制内核密度估计的带宽。
  • cut:控制小提琴图的形状,可以是“cut”(截断)、“extend”(延伸)或“both”(同时截断和延伸)。
  • linewidth:小提琴图边框线的宽度。
  • palette:调色板,用于设置小提琴图的颜色。
  • saturation:控制小提琴图的饱和度。
  • ax:绘制小提琴图的坐标轴对象。

(1)普通绘图

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")

sns.violinplot(x="day", y="total_bill", data=data)

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第20张图片
(2)通过inner='quartile'参数绘制四分位线:

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")

sns.violinplot(x="day", y="total_bill", data=data,inner='quartile', hue="sex")

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第21张图片

3.3 Categorical estimate plots(分类统计图)

3.3.1 barplot(条形图)

Seaborn 库中的 barplot(条形图)是一种用于可视化分类变量和数值变量之间关系的图形。它可以用于比较不同类别或分组之间的数值变量的大小、趋势和差异。

seaborn.barplot(
    data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
    estimator="mean", errorbar=("ci", 95), n_boot=1000, units=None, seed=None,
    orient=None, color=None, palette=None, saturation=.75, width=.8,
    errcolor=".26", errwidth=None, capsize=None, dodge=True, ci="deprecated",
    ax=None,
    **kwargs,
)

常用参数说明:

  • x, y:数据集,x 和 y 同时存在时,会绘制一个二维条形图,x 或 y 可以是数据集的列名或索引。
  • hue:按照指定的分类变量进行分组,绘制不同颜色的条形图。
  • data:数据集,可以是 pandas DataFrame、numpy array、或者其他形式的数据集;
  • estimator:聚合函数,用于将分类变量和数值变量聚合成一个统计量,例如平均值、中位数等。
  • ci:误差线的置信区间,可以是“sd”(标准差)、“boot”(自助法置信区间)或浮点数(置信区间的大小)。
  • capsize:误差线的帽子大小。
  • palette:调色板,用于设置条形图的颜色。
  • order:分类变量的顺序,可以是列表、Series 或 None。
  • hue_order:hue 分组变量的顺序,可以是列表、Series 或 None。
  • saturation:控制条形图的饱和度。
  • errcolor:误差线的颜色。
  • errwidth:误差线的宽度。
  • ax:绘制条形图的坐标轴对象。

(1)统计平均数:

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")

# 统计星期三到星期天的消费总额的平均数
sns.catplot(x="day",y="total_bill",data=data, kind="bar")

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第22张图片
(2)统计比例:

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('titanic', data_home="D:\seaborn-data-master")

# 统计男女中获救的比例
sns.catplot(data=data,kind="bar",x="sex",y="survived")

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第23张图片
(3)自定义函数:设置estimator为中位数(numpy的统计函数都可以,只要你觉得有意义),设置误差棒的宽度,误差棒的颜色为“c”

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")

# 自定义函数
ax = sns.barplot(x="day", y="total_bill",hue='sex', data=data, estimator=np.median,capsize=0.2,errcolor='c')

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第24张图片

3.2.2 countplot(柱状图)

Seaborn 库中的 countplot(柱状图)是一种用于可视化分类变量之间关系的图形。它可以用于比较不同类别或分组之间的数量、频率和比例。

seaborn.countplot(
    data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
    orient=None, color=None, palette=None, saturation=.75, width=.8,
    dodge=True, ax=None, **kwargs
)

常用参数说明:

  • x, y:指定分类变量在x轴或y轴上显示。
  • hue:按照一个额外的分类变量对数据进行分组,并在同一轴上用不同颜色表示。
  • data:指定要绘制的数据集。
  • order, hue_order:指定分类变量的顺序,可以是列表或数组。
  • orient:指定绘图方向,可以是“v”(垂直)或“h”(水平)。
  • palette:指定绘图颜色,可以是任何matplotlib调色板名称或颜色列表。
  • saturation:控制颜色的饱和度。
  • dodge:对hue变量进行分组时,指定是否将条形图分离开。
  • ax:指定要绘制的轴对象。
  • **kwargs:其他参数,例如标签和标题等。
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('titanic', data_home="D:\seaborn-data-master")

sns.countplot(x="class", hue="who", data=data)

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第25张图片

3.3.3 pointplot(点线图)

Pointplot是一种用于可视化分类变量和数值变量之间关系的图表类型。它显示了每个分类变量的平均值(或中位数等)和置信区间,通常使用点和线的组合来表示。

Pointplot的主要优点是可以同时显示多个分类变量之间的关系,以及用置信区间表示变量之间的显著性差异。另外,它还可以轻松地添加额外的分类变量或使用不同的调色板来显示数据。

需要注意的是,Pointplot适用于分类变量和数值变量之间的关系,但不适用于分类变量之间的关系。如果需要显示分类变量之间的关系,可以考虑使用其他类型的图表,例如条形图或热力图。

seaborn.pointplot(
    data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
    estimator="mean", errorbar=("ci", 95), n_boot=1000, units=None, seed=None,
    markers="o", linestyles="-", dodge=False, join=True, scale=1,
    orient=None, color=None, palette=None, errwidth=None, ci="deprecated",
    capsize=None, label=None, ax=None,
)

常用参数说明:

  • x, y:指定分类变量在x轴或y轴上显示。
  • hue:按照一个额外的分类变量对数据进行分组,并在同一轴上用不同颜色表示。
  • data:指定要绘制的数据集。
  • order, hue_order:指定分类变量的顺序,可以是列表或数组。
  • estimator:指定要计算的统计量,例如平均值、中位数等。
  • ci:指定置信区间的大小,可以是标准误差、置信区间等。
  • markers:指定数据点的标记样式。
  • linestyles:指定线条的样式。
  • dodge:对hue变量进行分组时,指定是否将点分离开。
  • join:指定是否用线条连接相邻的点。
  • scale:指定点的大小是否按照数据的方差进行缩放。
  • ax:指定要绘制的轴对象。
  • **kwargs:其他参数,例如标签和标题等。
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('titanic', data_home="D:\seaborn-data-master")

sns.catplot(x="sex",y="survived",data=data,kind="point",hue="class")

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第26张图片

四、Distribution plots(分布图)

4.1 单变量分布图

4.1.1 distplot(直方图)

seaborn.distplot(a=None, bins=None, hist=True, kde=True, rug=False, fit=None,
             hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None,
             color=None, vertical=False, norm_hist=False, axlabel=None,
             label=None, ax=None, x=None)

常用参数说明:

  • a:要绘制的数据,可以是数组、Series、DataFrame或者类似数组的对象。
  • bins:直方图的柱数,默认为10。
  • hist:是否绘制直方图,默认为True。
  • kde:是否绘制概率密度曲线,默认为True。
  • rug:是否绘制数据的小竖条(rugplot),默认为False。
  • fit:是否拟合数据分布的参数,可以传入一个分布函数,默认None。
  • color:颜色。
  • vertical:是否竖向绘制,默认为False。
  • norm_hist:是否将直方图的面积归一化为1,默认为False。
  • axlabel:x轴标签。
  • label:图例标签。
  • kde_kws:用于控制概率密度曲线的参数,如线宽、颜色等。
  • hist_kws:用于控制直方图的参数,如颜色、边界等。
  • rug_kws:用于控制rugplot的参数,如颜色、高度等。
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('titanic', data_home="D:\seaborn-data-master")

# 去除Titanic数据集中年龄缺失的数据,得到一个新的数据集titanic
titanic = data[~np.isnan(data['age'])]

# 设置Seaborn绘图时使用默认颜色代码
sns.set(color_codes=True)

# 绘制titanic数据集中年龄的直方图
sns.distplot(titanic['age'])

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第27张图片

4.1.2 kdeplot(核密度图)

核密度图(Kernel Density Estimation,简称KDE)是一种常用于描述数据分布的非参数方法,它可以通过在每个数据点周围的小区域内放置一个核函数,并将这些核函数的和除以样本数量来估计数据的概率密度函数。核密度图通常用于可视化连续变量的分布情况,它可以更加平滑地显示数据的分布情况,避免了直方图等离散化的缺点。

seaborn.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:要绘制的数据,可以是numpy数组、pandas DataFrame或其他类似数据结构。
  • x, y:要绘制的数据的变量名,可以是字符串或变量名。
  • shade:是否填充密度曲线下面的区域,默认为True。
  • color:控制密度曲线和填充区域的颜色。
  • kernel:核函数的类型,默认为’gau’,可以选择’biw’、‘cos’、‘epa’、'tri’等其他类型。
  • bw_method:控制核函数带宽的方法,默认为’scott’,可以选择’silverman’、'isj’等其他方法。
  • gridsize:控制密度曲线的平滑度,值越大曲线越平滑,默认为256。
  • cut:控制绘制密度曲线的范围,可以选择’left’、‘right’、'both’或None。
  • clip:控制

(1)双线核密度图

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格

# 生成随机数据
data1 = np.random.randn(1000)
data2 = np.random.randn(1000)

# 绘制核密度图
sns.kdeplot(data1, shade=True, color="r")

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第28张图片
(2)双变量核密度图:

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格


# 生成随机数据
x = np.random.randn(1000)
y = np.random.randn(1000)

# 绘制双变量核密度图
sns.kdeplot(x=x, y=y,shade=True,shade_lowest=False,cbar=True,color='b')

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第29张图片

4.2 双变量分布图

4.2.2 jointplot(联合图)

seaborn模块的jointplot函数可以用于绘制联合图,即同时显示两个变量之间的关系,包括散点图、直方图、核密度图等。jointplot函数的参数包括x、y、data、kind、color等,其中x和y分别表示要绘制的两个变量,data表示数据集,kind表示要绘制的图形类型,color表示颜色。jointplot函数可以绘制以下几种类型的联合图:

  • 散点图(scatter):用于显示两个变量之间的关系,可以通过kind参数设置为"scatter"来绘制。

  • 直方图(hist):用于显示每个变量的分布情况,可以通过kind参数设置为"hist"来绘制。

  • 核密度图(kde):用于显示两个变量之间的关系和每个变量的分布情况,可以通过kind参数设置为"kde"来绘制。

  • 六边形图(hex):用于显示两个变量之间的关系,但是比散点图更适用于大量数据点,可以通过kind参数设置为"hex"来绘制。

联合图可以帮助我们更好地理解两个变量之间的关系,特别是在探索数据时非常有用。

seaborn.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
)

常用参数说明:

  • x, y:要绘制的数据的变量名,可以是字符串或变量名。
  • data:要绘制的数据,可以是numpy数组、pandas DataFrame或其他类似数据结构。
  • kind:图形类型,可以是"scatter"(散点图)、“hist”(双变量直方图)或"kde"(双变量核密度图)。
  • color:控制图形的颜色。
  • height:图形的高度,默认为6。
  • ratio:散点图与双变量直方图(或双变量核密度图)的比例,默认为5。
  • space:散点图与双变量直方图(或双变量核密度图)之间的间距,默认为0.2。
  • dropna:是否删除缺失值,默认为True。
  • xlim, ylim:x轴和y轴的限制范围。
  • joint_kws:用于传递给绘制散点图或双变量核密度图的参数,例如marker、s等。
  • marginal_kws:用于传递给绘制双变量直方图或双变量核密度图的参数,例如bins、hist_kws、kde_kws等。

(1)边缘直方图绘制散点图:

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
sns.jointplot(x="total_bill", y="tip", data=data)

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第30张图片

(2)核密度图:

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
sns.jointplot(x="total_bill", y="tip", data=data,kind="kde")

plt.show()

运行结果:

100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第31张图片

五、lmplot(线性回归图)

Seaborn 模块中的 lmplot() 函数是一个用于绘制线性回归图的高级函数,它可以帮助我们快速地进行线性回归分析和可视化。

seaborn.lmplot(
    data=None, *,
    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,
)

常用参数说明:

  • x 和 y:指定用于绘制图形的变量;

  • data:指定数据集;

  • hue:指定分类变量,用于按照不同类别对数据进行分组;

  • col 和 row:指定用于分组的列名,用于在多个子图中绘制不同的数据子集;

  • fit_reg:指定是否绘制回归线;

  • ci:指定置信区间的大小;

  • scatter_kws 和 line_kws:用于控制散点图和回归线的样式。

  • col_wrap:指定每行最多显示的子图数量,当col参数有多个取值时有效,可选参数。

  • palette:指定颜色调色盘,可以是Seaborn自带的调色盘名称,也可以是自定义的颜色序列,可选参数。

  • size:指定图像的大小,可以是标量或者元组,可选参数。

  • aspect:指定图像的纵横比,可选参数。

  • markers:指定散点图的标记样式,可以是标记名称或者元组,可选参数。

  • legend:指定是否显示图例,可选参数。

  • legend_out:指定图例是否在图像外部显示,可选参数。

  • scatter_kws:指定散点图的其他参数,如点的大小、颜色等,可选参数。

  • line_kws:指定回归线的其他参数,如线型、颜色等,可选参数。

  • order:指定回归线的阶数,可选参数。

  • robust:指定是否使用鲁棒回归,可选参数。

  • logistic:指定是否使用逻辑回归,可选参数。

  • lowess:指定是否使用低通滤波平滑数据,可选参数。

  • x_estimator:指定用于估计x轴数据的函数,可选参数。

  • x_bins:指定将x轴数据分成多少个区间,可选参数。

  • scatter:指定是否绘制散点图,可选参数。

  • fit_reg:指定是否绘制回归线,可选参数。

  • truncate:指定是否截断回归线,可选参数。

  • hue_order:指定hue参数的顺序,可选参数。

  • col_order:指定col参数的顺序,可选参数。

  • row_order:指定row参数的顺序,可选参数。

  • logistic:指定是否使用逻辑回归,可选参数。

  • logx:指定是否对x轴进行对数变换,可选参数。

  • logy:指定是否对y轴进行对数变换,可选参数。

  • truncate:指定是否截断回归线,可选参数。

  • dropna:指定是否删除缺失值,可选参数。

(1)普通绘图

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")

sns.lmplot(x="total_bill", y="tip", data=data)

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第32张图片

(2)指定分类变量

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")

sns.lmplot(x="total_bill", y="tip", hue="smoker", data=data)

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第33张图片
(3)将变量分为多行:

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")

sns.lmplot(x="total_bill", y="tip", col="day", hue="day",data=data, col_wrap=2, height=4)

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第34张图片

六、Matrix plots(矩阵图)

6.1 heatmap(热力图)

热力图是一种数据可视化技术,通过在二维平面上使用颜色来表示数据的密度分布,以便更直观地观察和分析数据。热力图通常用于显示地理信息、网站流量、销售数据等。在热力图中,颜色越深表示数据点分布越密集,颜色越浅则表示数据点分布越稀疏。

seaborn.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:要绘制的数据集,可以是Pandas的DataFrame或Numpy的数组,必填参数。
  • annot:默认为False,如果为True,则在热力图中显示每个方格的数据。
  • fmt:annot参数为True时,可以使用fmt参数来设置注释的格式,例如fmt=".2f"保留小数点后两位。
  • cmap:热力图的颜色映射,可以是matplotlib中的颜色映射名称或颜色值列表,例如cmap=“YlGnBu”。
  • linewidths:方格之间的线宽,可以是浮点数或整数,例如linewidths=0.5。
  • linecolor:方格之间的线的颜色,例如linecolor=‘white’。
  • cbar:是否在热力图旁边绘制颜色条,默认为True。
  • cbar_kws:颜色条的参数,例如cbar_kws={“orientation”: “horizontal”}可以将颜色条水平放置。
  • square:默认为False,如果为True,则将方格设置为正方形。
  • xticklabels、yticklabels:默认为True,如果为False,则不显示x轴和y轴的标签。
  • ax:要在其上绘制热力图的子图对象,如果没有指定,则使用当前活动的子图。
  • vmin、vmax:颜色映射的最小值和最大值,如果没有指定,则使用数据集的最小值和最大值。

(1)普通绘图:

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格

# 创建数据集
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# 绘制热力图
sns.heatmap(data)

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第35张图片

(2)显示对应数字:

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格

# 创建数据集
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# 绘制热力图
sns.heatmap(data, cmap="YlGnBu", annot=True, fmt=".1f", linewidths=.5)

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第36张图片

6.2 clustermap(聚类图)

聚类图(clustermap)是一种用于可视化聚类分析结果的图表,通常用于展示基因表达数据、蛋白质相互作用网络等复杂数据的聚类分析结果。聚类图将数据集中的样本或特征进行聚类分析,并将聚类分析的结果以热力图的形式展示出来,同时还包括样本聚类树和特征聚类树,方便观察和分析数据的聚类模式和相关性。

seaborn.clustermap(
    data, *,
    pivot_kws=None, method='average', metric='euclidean',
    z_score=None, standard_scale=None, figsize=(10, 10),
    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=.2, colors_ratio=0.03,
    cbar_pos=(.02, .8, .05, .18), tree_kws=None,
    **kwargs
)

常用参数说明:

  • data:必需参数,指定要绘制的数据集。

  • pivot_kws:字典类型,用于传递给pivot函数的参数。

  • method:指定聚类的方法,可以是“single”、“complete”、“average”、“weighted”、“centroid”、“median”或“ward”。

  • metric:指定距离度量方法,可以是“euclidean”、“manhattan”、“chebyshev”、“minkowski”、“cityblock”、“correlation”、“hamming”、“jaccard”等。

  • cmap:指定颜色映射,可以是Matplotlib中的任何颜色映射。

  • linewidths:指定连线的宽度。

  • figsize:指定图像的大小。

  • row_cluster、col_cluster:指定是否对行或列进行聚类,默认为True。

  • row_colors、col_colors:指定行或列的颜色,可以是颜色名称、颜色列表或颜色映射。

  • dendrogram_ratio:指定聚类树的高度与热图的高度之比。

  • cbar_pos:指定颜色条的位置,可以是“right”、“left”、“top”、“bottom”。

  • cbar_kws:字典类型,用于传递给颜色条的参数。

  • xticklabels、yticklabels:指定行或列的标签。

  • annot:指定是否在热图上标注数据。

  • fmt:指定标注数据的格式。

  • annot_kws:字典类型,用于传递给标注的参数。

  • mask:指定哪些数据需要被遮盖。

  • vmin、vmax:指定颜色条的最小值和最大值。

这个示例中,我们使用了一个10x10的随机数据作为输入数据,使用“coolwarm”颜色映射、ward聚类方法、euclidean距离度量,并调整了图像大小、颜色条位置、标签、字体大小等参数,最终得到了一个随机数据的聚类图:

import seaborn as sns
import numpy as np
import pandas as pd

# 生成随机数据
np.random.seed(0)
data = pd.DataFrame(np.random.rand(10, 10), columns=list('abcdefghij'))

# 绘制聚类图
sns.clustermap(data, cmap='coolwarm', method='ward', metric='euclidean', figsize=(10, 10),
               xticklabels=True, yticklabels=True, annot=True, fmt='.2f',
               annot_kws={"size": 10}, dendrogram_ratio=0.1, cbar_pos=(0.05, 0.85, 0.05, 0.1),
               linewidths=0.5, vmin=0, vmax=1)

plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第37张图片

七、FacetGrid(多个子图)

Seaborn模块中的FacetGrid可以用于绘制多个子图,每个子图可以根据一个或多个分类变量进行分组。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,
    )

FacetGrid的主要参数包括:

  • data:要绘制的数据集;
  • row、col:指定子图的行和列的分类变量;
  • hue:指定颜色变量;
  • col_wrap:指定每行的子图数量;
  • sharex、sharey:指定是否共享x轴或y轴;
  • size、aspect:指定每个子图的大小和宽高比;
  • margin_titles:指定是否在每个子图上显示标题。

在这个示例中,我们使用tips数据集,创建了一个FacetGrid对象,将子图按照性别和用餐时间进行分类,并根据吸烟行为变量进行着色。然后,我们使用map方法绘制散点图,将total_bill作为x轴变量,tip作为y轴变量。最后,我们使用set_titles方法添加子图标题,并使用plt.show()方法显示图像。

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")

# 创建FacetGrid对象
g = sns.FacetGrid(data, row="sex", col="time", hue="smoker", margin_titles=True)

# 绘制子图
g.map(sns.scatterplot, "total_bill", "tip")

# 添加标题
g.set_titles(row_template = '{row_name}', col_template = '{col_name}')

# 显示图像
plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第38张图片

八、PairGrid(子图网格)

PairGrid是Seaborn库中的一个工具,用于绘制成对关系的多个变量的图形。PairGrid的核心思想是将数据集拆分成多个子集,并在每个子集上绘制一个特定类型的图形。 PairGrid可以用于绘制散点图、直方图、密度图等。

PairGrid可以帮助我们探索多个变量之间的关系,帮助我们发现变量之间的相关性和模式。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,
    )

常用参数说明:

  1. data:指定数据集。

  2. vars:指定要用于绘图的变量列表。

  3. hue:指定用于分组的变量。

  4. palette:指定调色板。

  5. height:指定图形高度。

  6. aspect:指定图形宽高比。

  7. despine:是否去掉边框。

  8. diag_sharey:是否共享对角线的y轴刻度。

  9. corner:是否在对角线上绘制变量名。

  10. x_vars、y_vars:分别指定不同的x轴和y轴变量。

  11. dropna:是否删除缺失值。

  12. diag_kws、offdiag_kws:用于传递额外的参数给对角线和非对角线的绘图函数。

  13. grid_kws:用于传递额外的参数给PairGrid对象的matplotlib子图对象。

以上是sns.PairGrid常用的参数说明,根据需要可以自定义调整参数来实现不同的可视化效果。

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格

data = sns.load_dataset('iris', data_home="D:\seaborn-data-master")

g = sns.PairGrid(data)
g.map_upper(sns.scatterplot)
g.map_lower(sns.kdeplot)
g.map_diag(sns.histplot)
plt.show()

# 显示图像
plt.show()

运行结果:
100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第39张图片

专栏导读

本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html

  • 优点订阅限时9.9付费专栏进入千人全栈VIP答疑群,作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会)
  • 专栏福利简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等
    在这里插入图片描述
    在这里插入图片描述

书籍推荐(包邮送书5本)

码上行动:零基础学会Python编程(ChatGPT版)

100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)_第40张图片

本书从零开始,由浅入深地介绍了Python编程语言的基础知识,是面向零基础编程学习者的入门教程。全书共17章,其中第19章为基础篇,介绍了Python的语言基础,包括环境安装、输入/输出变量、常见数据类型、数学与逻辑运算、条件判断与循环语句、复合数据类型、函数、模块、文件操作;第1013章为进阶篇,介绍了与Python编程相关的拓展知识,包括Excel表格数据处理、使用正则表达式进行信息匹配、面向对象编程设计、多线程与多进程;第14~16章为实战篇,介绍了3个实战项目,分别是使用requests开发网络爬虫、使用tkinter开发GUI计算器、使用pygame开发飞机大战游戏;第17章为ChatGPT篇,主要介绍了初学者如何利用当下最热门的AI工具ChatGPT学习Python编程。

抽奖送书老规矩(不点赞收藏中奖无效):注意记得关注博主不然中奖了还不知道!!!

  • 1. 点赞收藏文章
  • 2. 评论区留言:人生苦短,我用Python!!!(留言才能进入奖池,每人最多留言三条)
  • 3. 周六八点爬虫抽奖5人
  • 如果不想抽奖京东自营购买链接:https://item.jd.com/13951968.html

你可能感兴趣的:(python,机器学习,人工智能,Seaborn,matplotlib)