Seaborn 是一个建立在 Matplotlib 基础上的 Python 可视化库,用于创建各种统计图形和数据可视化。Python 中使用 Seaborn 库绘制双变量分布图形是分析和可视化两个变量间关系的强大工具。Seaborn提供了多种方式来绘制双变量分布,包括散点图、六边形bin图、核密度估计(KDE)图等。通过Seaborn 库可以灵活地创建各种双变量分布图形,以深入理解数据中变量间的关系。

1、使用 scatterplot 绘制双变量分布

scatterplot() 函数用于绘制双变量分布图形,通常用于研究两个变量之间的关系。使用scatterplot()函数可以绘制两个变量之间的散点图。常用参数如下,

参数

描述

x

x轴上的数据。

y

y轴上的数据。

hue

用于分组数据的列名,不同组使用不同颜色。

style

用于区分不同组的列名,不同组使用不同标记样式。

size

表示数据点大小的列名,根据列值调整数据点大小。

data

包含数据的DataFrame。

palette

调色板,用于设置颜色。

sizes

用于设置不同大小的数据点。

estimator

用于每个分组内计算统计量的函数,如

numpy.mean

ci

置信区间的大小。

markers

控制是否显示标记。

x_jitter

控制x轴上的抖动。

y_jitter

控制y轴上的抖动。

legend

控制图例的显示方式。

ax

绘图的Axes对象,可指定图形绘制位置。

使用示例:

import seaborn as sns
import matplotlib.pyplot as plt

# 示例数据
import pandas as pd
data = pd.DataFrame({
    "X": [1, 2, 3, 4, 5],
    "Y": [2, 4, 1, 3, 5],
    "Group": ["A", "A", "B", "B", "C"],
    "Size": [10, 20, 30, 40, 50]
})

# 创建散点图
sns.scatterplot(x="X", y="Y", hue="Group", style="Group", size="Size", data=data, palette="Set1", sizes=(100, 200), legend="full")

# 添加标题
plt.title("cjavapy")

# 显示图例
plt.legend(title="Groups")

# 使用 plt.draw() 显示画布
plt.draw()

# 显示图形
plt.show()

2、使用 jointplot 绘制双变量分布

jointplot() 函数用于绘制双变量分布图,通常用于可视化两个变量之间的关系。可以根据自己的数据和需求来调整这些参数,以创建不同类型的双变量分布图。常用参数如下,

参数

描述

x

指定 x 轴的数据

y

指定 y 轴的数据

data

包含数据的 DataFrame

kind

绘图的类型{ “scatter” | “kde” | “hist” | “hex” | “reg” | “resid” }

color

指定绘图的颜色

height

图形的高度

ratio

联合图中散点图和轴的高宽比

space

联合图中轴之间的空间

dropna

是否删除包含 NaN 值的行

xlim 和 ylim

设置 x 和 y 轴的限制

joint_kws

传递给散点图或其他绘图类型的其他参数

使用示例:

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

# 创建一个示例数据集
data = pd.DataFrame({
    'sepal_length': [5.1, 4.9, 4.7, 4.6, 5.0],
    'sepal_width': [3.5, 3.0, 3.2, 3.1, 3.6],
    'petal_length': [1.4, 1.4, 1.3, 1.5, 1.4],
    'petal_width': [0.2, 0.2, 0.2, 0.2, 0.2],
    'species': ['C#', 'JAVA', 'Python', 'C#', 'Python']
})


# 使用 jointplot() 绘制双变量分布图
sns.jointplot(
    x="sepal_length",
    y="petal_length",
    data=data,
    kind="scatter",
    color="b",
    height=6,
    ratio=5,
    space=0.2,
    dropna=True,
    xlim=(4, 8),  # 设置 x 轴的限制
    ylim=(1, 7),  # 设置 y 轴的限制
    joint_kws={"s": 50}  # 传递给散点图的额外参数
)

# 显示图形
plt.show()

3、使用 pairplot 绘制双变量分布

当同时查看多个双变量分布时,pairplot()函数非常有用。它会创建一个网格,展示数据集中每对变量的关系。pairplot() 函数用于绘制数据集中多个变量之间的关系图,通常用于研究变量之间的相关性。常用参数如下,

参数

描述

data

包含数据的 DataFrame 对象

hue

用于分组数据的列名

vars

要绘制的特定列的列表,如果为 None,则绘制所有列

kind

图的类型{‘scatter’, ‘kde’, ‘hist’, ‘reg’}

diag_kind

对角线上的图的类型{‘auto’, ‘hist’, ‘kde’, None}

markers

不同组的数据点标记样式

palette

调色板名称或颜色映射,用于控制不同组的颜色

height

每个子图的高度(以英寸为单位)

aspect

每个子图的宽高比

plot_kws

传递给绘图函数的其他关键字参数

diag_kws

传递给对角线图的其他关键字参数

使用示例:

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

# 导入数据集
iris = pd.DataFrame({
    'sepal_length': [5.1, 4.9, 4.7, 4.6, 5.0],
    'sepal_width': [3.5, 3.0, 3.2, 3.1, 3.6],
    'petal_length': [1.4, 1.4, 1.3, 1.5, 1.4],
    'petal_width': [0.2, 0.2, 0.2, 0.2, 0.2],
    'species': ['C#', 'JAVA', 'Python', 'C#', 'Python']
})

# 使用 pairplot 创建双变量分布图
sns.pairplot(iris, 
             hue="species",   # 按照鸢尾花的种类分组并着色
             markers=["o", "s", "D"],  # 不同种类的数据点使用不同标记样式
             palette="Set1",  # 使用颜色调色板 "Set1"
             diag_kind="kde",  # 对角线上使用核密度估计图
             height=2.5,       # 每个子图的高度
             aspect=1.2)       # 宽高比

# 添加标题
plt.suptitle("cjavapy", y=1.02)

# 显示图形
plt.show()

推荐文档