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

news2024/12/28 3:09:04

文章目录

  • 一、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(子图网格)
  • 专栏导读

一、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")      # 四周加边框和刻度

在这里插入图片描述
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")

在这里插入图片描述

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

在这里插入图片描述

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。这几种风格的颜色不变,主要调整的是亮度和饱和度:
在这里插入图片描述
换一个风格看看:

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

设置前:
在这里插入图片描述
设置后:
在这里插入图片描述

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

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

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

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

在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()

运行结果:

在这里插入图片描述

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

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

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

运行结果:
在这里插入图片描述
(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()

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

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

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

三、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()

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

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

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

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

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

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

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

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

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

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

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

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

运行结果:
在这里插入图片描述
(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()

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

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

运行结果:
在这里插入图片描述
(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()

运行结果:
在这里插入图片描述
(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()

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

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

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

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

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

四、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()

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

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

运行结果:
在这里插入图片描述
(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()

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

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

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

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

运行结果:

在这里插入图片描述

五、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()

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

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

运行结果:
在这里插入图片描述
(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()

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

六、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()

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

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

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

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

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

七、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()

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

八、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从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/560044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

常见的几种设计模式——单例、工厂、代理、模板

文章目录 前言一、工厂模式1、介绍2、实现 二、单例模式1.介绍2.实现3、懒汉与饿汉 三、代理模式1、介绍2、实现3、AOP的底层实现 四、模板模式1、介绍2、实现 总结 前言 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过…

某书最新版X-s(2023/5/23更新)

前不久刚写过xhs的x-s, 前几天听一些小伙伴说又更新了,我二话不说还按原先的逆向思路,直接搜function sign,开始施展补环境大法。。。 一顿无用的折腾,补完后,测试发现死活不成功,这真是离了大谱了。 对比了一下,通过补环境,sign生成的x-s: 浏览器的x-s: 很明显…

MySQL-3-创建表、删除表、增删改、约束、索引

一、创建表 语法格式&#xff1a; create table <表名>( 字段名1 数据类型&#xff0c; 字段名2 数据类型&#xff0c; … ); 补充&#xff1a;MySQL中常见的数据类型 int 整数&#xff08;对应Java中的int&#xff09; bigint 长整型&#xff08;对应Java中的long&#…

我叫缺陷,也叫Bug,下面介绍一下我的生命周期

我叫缺陷&#xff0c;从被创建至关闭&#xff0c;到最后做缺陷分析&#xff0c;这是我的完整生命周期。我的整个生命周期贯穿着整个项目的项目周期&#xff0c;因此&#xff0c;掌握我的生命周期&#xff0c;不止是测试人员必修的课程&#xff0c;也是测试人员的灵魂。 缺陷的定…

强化学习系列之Policy Gradient算法

一. 背景 1.1 基础组成部分 强化学习里面包含三个部件:Actor,environment,reward function Actor : 表示角色,是能够被玩家控制的。 Policy of Actor:在人工智能中,Policy π \pi π 可以表示为一个神经网络,参数为 θ \theta

C# MVC 微信支付之小程序红包

最近有个项目增加导游引流功能&#xff0c;因为项目只用的小程序&#xff0c;没有使用公众号&#xff0c;没法用”现金红包“功能&#xff0c;开通商家转账到零钱需要7-14天才能申请下来&#xff0c;暂时先用小程序红包顶上&#xff0c;一路都是坑啊&#xff0c;特此记录下。 官…

docker常规命令使用

docker 操作 命令分类 启动类、镜像、容器 docker服务启动 systemctl start docker docker 版本查看 docker version 列出本机所有镜像 docker images 在远程仓库中查找镜像 docker search --limit 5 redis //从仓库中查找点赞数前5的redis镜像 从远程仓库中拉取镜像 docker …

Wireshark - 过滤表达式的规则

文章目录 1. 过滤 协议2. 过滤 端口3. 过滤 IP4. 过滤 TCP重传数据包5. 包长度过滤6. <未完待续2023.5.23> 1. 过滤 协议 1、TCP - 只显示TCP协议2、!TCP - 排除TCP协议 2. 过滤 端口 1、tcp.port6666 - 显示&#xff08;不分来源或目标&#xff09;端口2、tcp.dstp…

Hadoop完全分布式搭建

主机设置 三台主机关闭防火墙 三台主机关闭SeLinux安全机制 给每台主机修改主机名 配置三台主机地址映射 设置免密登录 安装JDK 解压安装 配置jdk的环境变量 测试安装成功 分发JDK 安装配置 Hadoop 解压安装 Hadoop环境配置文件 - hadoop-env.sh 修改Hadoop…

【电商必备】增长销售和客户在线支持的网站即时聊天(一)

科技的进步无疑令商业世界更加国际化&#xff0c;你的公司一定有来自世界各地的客户。试想一下&#xff0c;你的公司本部在亚洲&#xff0c;但有国外的客户在非工作时间透过Google搜寻到你公司&#xff0c;并有疑问期望实时得到回复&#xff0c;我们可以如何解决时差的问题呢&a…

MySQL 事务篇

事务有哪些特性&#xff1f; 原子性&#xff1a; 一个事务中的所有操作&#xff0c;必须全部执行。要么全部完成要么就不完成。中间如果出现错误&#xff0c;就要回滚到初始状态。 持久性&#xff1a; 事务处理结束后&#xff0c;对数据的修改就是永久的&#xff0c;就是系统故…

使用CSS来实现爱心信封的效果

想必在520大家都和女朋友过了完美的节日&#xff0c;可是博主还没有女朋友鹅鹅鹅&#xff0c;还是写一个爱心信封来维护自己弱小的心灵吧鹅鹅鹅 个人名片&#xff1a; &#x1f60a;作者简介&#xff1a;一名大一在校生&#xff0c;web前端开发专业 &#x1f921; 个人主页&a…

用友助力中核集团建设财务共享中心新华发电分中心,实现业财融合

企业在进行决策时需要大量的财务信息作为依据&#xff0c;财务共享中心的建设可以帮助企业将财务和业务分离后重新有序融合&#xff0c;使得决策数据更有价值&#xff0c;也帮助企业的管理和决策更加贴合实际。 新华水力发电有限公司&#xff08;简称“新华发电”&#xff09;…

IPEmotion采集J1939协议信号

一 背景 由于商用车相对于乘用车更注重实用性&#xff0c;功能也较单一&#xff0c;且具有产量小的特点&#xff0c;因此在设计开发时需要进行约束&#xff0c;以更大程度实现软硬件的复用和成本的降低&#xff0c;在此需求下J1939协议便随之产生了。 J1939协议是由美国汽车工…

使用Fiddler工具抓取微信小程序中的图片,使用Fiddler工具抓取电脑访问的链接图片

背景&#xff1a; 开发微信小程序的时候&#xff0c;是不是经常看到别人的小程序中某个图标或者图片好看想用&#xff0c;下面小编给大家分享一下怎么获得微信小程序中的图片。 一.什么是Fiddler 官网&#xff1a;https://www.telerik.com/ 下载地址1&#xff1a;Fiddler4_官方…

✨概率论期末速成(三套卷)——试卷①✨

✨博主&#xff1a;命运之光 ✨专栏&#xff1a;概率论期末速成&#xff08;三套卷&#xff09; 目录 ✨一、填空题&#xff08;在下列各题填写正确答案&#xff0c;不填、填错&#xff0c;该题无分&#xff0c;每小题3分&#xff0c;共36分&#xff09;✨二、计算题(本大题6小…

《2023金融科技十大趋势报告》重磅发布:安全成为金融科技发展生命线

5月23日&#xff0c;由腾讯研究院、腾讯云、腾讯安全、微信支付、腾讯广告、腾讯优图实验室、招商银行、中信建投证券联合编制的《2023金融科技十大趋势报告》&#xff08;以下简称《报告》&#xff09;正式发布。《报告》从创新篇、智能篇、普惠篇、安全篇、融合篇五个方面总结…

虎牙直播在微服务改造的实践总结2

博主介绍&#xff1a;✌全网粉丝4W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战、定制、远程&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面…

常用的Jmeter参数化技巧总结,总有一个你不知道

说起接口测试&#xff0c;相信大家在工作中用的最多的还是Jmeter。 JMeter是一个100&#xff05;的纯Java桌面应用&#xff0c;由Apache组织的开放源代码项目&#xff0c;它是功能和性能测试的工具。具有高可扩展性、支持Web(HTTP/HTTPS)、SOAP、FTP、JAVA 等多种协议。 在做…

安全狗云原生安全能力亮相2023年智能汽车信息安全大会

5月19日&#xff0c;2023年智能汽车信息安全大会在上海顺利落幕。作为国内云原生安全领导厂商&#xff0c;安全狗受邀出席此次活动。 据悉&#xff0c;在领导致辞后&#xff0c;来自汽车行业以及网络安全行业的专家们就智能汽车涉及到的数据安全、安全合规、网络安全等话题展开…