HOWTO · Seaborn

如何更改 Seaborn 图表大小

本教程演示了如何在 Python 中更改 Seaborn 图表的大小。

本页内容

在数据科学和可视化中,创建信息丰富且视觉上吸引人的图表至关重要。创建美观图表的一个强大工具是 Seaborn,它是构建在 Matplotlib 之上的 Python 数据可视化库。

在本文中,我们将探讨在 Python 中设置 Seaborn 图表图形大小的各种方法,从使用 height 和 aspect 等内置参数,到使用 Matplotlib 的 figure()、gcf() 和 subplots() 等函数。

在 Python 中使用 seaborn.set() 函数设置 Seaborn 图表图形大小

我们要使用的第一种方法是 seaborn.set() 函数,它让用户可以自定义库外观的各个方面,包括主题和配置。针对我们的目的,我们将着重于用它来控制 Seaborn 图表的大小。

语法:

import seaborn as sns

sns.set(rc={"figure.figsize": (width, height)})

rc 参数接受一个字典,我们在其中指定关键字参数 'figure.figsize',并将对应值设为包含图形所需宽度和高度的元组。请将 width 和 height 替换为图形的具体大小。

使用 seaborn.set() 设置 Seaborn 图形大小的示例

默认图形大小:

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

# Sample data
df = pd.DataFrame(
    {"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)

sns.lineplot(data=df)
plt.title("Default Figure Size")
plt.show()

在最初的代码块中,我们导入所需的库、创建示例数据,并在未明确设置图形大小的情况下生成图表。这代表默认行为。

代码输出:

Seaborn 图形大小 - 输出

设置 Seaborn 图形大小之后:

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

df = pd.DataFrame(
    {"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)

sns.set(rc={"figure.figsize": (15, 8)})
p = sns.lineplot(data=df)
plt.show()

在这个修改过的代码块中,我们引入了 sns.set(rc={"figure.figsize": (15, 8)}),调用 seaborn.set() 函数来指定 Seaborn 图形大小。rc 参数接受一个字典,在这个例子中,我们将关键字参数 "figure.figsize" 设置为所需的尺寸:宽 15 英寸、高 8 英寸。

代码输出:

Seaborn 图形大小 - 输出 1

输出显示了一个具有指定图形大小(宽 15 英寸、高 8 英寸)的折线图,确保视觉呈现符合所需的大小。

在 Python 中使用 rcParams 函数设置 Seaborn 图表图形大小

除了 seaborn.set() 函数之外,设置 Seaborn 图形大小的另一种方法是使用 matplotlib.pyplot 模块 中的 rcParams 函数。这第二种方法同样提供了自定义图表样式的灵活性。

rcParams 函数用于配置 Matplotlib 行为的各个方面,包括图形大小。若要更改图形大小,我们特别针对 rcParams 中的 "figure.figsize" 参数,将所需尺寸以元组形式赋值给它。

语法:

from matplotlib import rcParams

rcParams["figure.figsize"] = (width, height)

请将 width 和 height 替换为您想要的图形具体尺寸。

使用 rcParams 设置 Seaborn 图形大小的示例

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

df = pd.DataFrame(
    {"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)

rcParams["figure.figsize"] = 15, 8

p = sns.lineplot(data=df)
plt.show()

若要设置图形大小,我们使用 rcParams["figure.figsize"] = 15, 8。这行代码直接修改 Matplotlib 的运行时配置参数,以指定所需的尺寸:宽 15 英寸、高 8 英寸。

代码输出:

Seaborn 图形大小 - 输出 2

在 Python 中使用 matplotlib.pyplot.figure() 函数设置 Seaborn 图表图形大小

我们可以使用的另一种简单方法是 matplotlib.pyplot.figure() 函数,它用于创建一个新的图形实例。通过利用这个函数中的 figsize 参数,我们可以以英寸为单位指定图形对象的宽度和高度。

语法:

import matplotlib.pyplot as plt

plt.figure(figsize=(width, height))

请将 width 和 height 替换为您想要的图形具体尺寸。必须在创建图表之前调用这个函数,以确保图形大小得到适当配置。

使用 matplotlib.pyplot.figure() 设置 Seaborn 图形大小的示例

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

df = pd.DataFrame(
    {"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)

# Set the size of the figure using matplotlib.pyplot.figure()
plt.figure(figsize=(15, 8))

# Create plot
p = sns.lineplot(data=df)
plt.show()

在这个示例中,我们使用 plt.figure(figsize=(15, 8)),其中 figsize 以表示图形宽度和高度的元组形式指定。这个方法确保后续的图表遵循指定的尺寸。

代码输出:

Seaborn 图形大小 - 输出 3

我们已成功创建了一个具有指定 Seaborn 图形大小(宽 15 英寸、高 8 英寸)的折线图。

在 Python 中使用 matplotlib.pyplot.gcf() 函数设置 Seaborn 图表图形大小

若要精细控制图表的大小,matplotlib.pyplot.gcf() 函数结合 set_size_inches() 提供了一个多功能的解决方案。

matplotlib.pyplot.gcf() 函数是“获取当前图形”(get current figure)的缩写,它会获取当前的图形实例。与 set_size_inches() 搭配使用时,它可以让您动态调整图形大小。

语法:

import matplotlib.pyplot as plt

current_fig = plt.gcf()

current_fig.set_size_inches(width, height)

请将 width 和 height 替换为您所需的尺寸。当您已经创建了一个图表并想修改其大小时,这个函数特别方便。

使用 matplotlib.pyplot.gcf() 设置 Seaborn 图形大小的示例

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

df = pd.DataFrame(
    {"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)

p = sns.lineplot(data=df)

plt.gcf().set_size_inches(15, 8)
plt.show()

与先前的示例不同,我们在创建图表之后使用 plt.gcf().set_size_inches(15, 8) 来设置图形大小。plt.gcf() 会获取当前的图形实例,然后应用 set_size_inches(),将图形动态调整为宽 15 英寸、高 8 英寸。

代码输出:

Seaborn 图形大小 - 输出 4

可以看到,输出显示了一个具有指定图形大小(宽 15 英寸、高 8 英寸)的折线图。

在 Python 中使用 height 和 aspect 参数设置 Seaborn 图表图形大小

Seaborn 为 lmplot、catplot 和 jointplot 等特定图表类型提供 height 和 aspect 等内置参数,从而简化了调整图形大小的过程。这些参数让用户无需额外的函数调用,即可直接控制所绘制图形的大小。

Seaborn 中的 height 参数表示整个图形的高度,而 aspect 参数控制图表的宽高比。

使用 height 和 aspect 参数设置 Seaborn 图形大小的示例

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

df = pd.DataFrame(
    {"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)

# create plot
p = sns.catplot(data=df, height=8, aspect=15 / 8, kind="bar")
plt.show()

在这个示例中,若要设置图形大小,我们使用本质上支持 height 和 aspect 参数的 sns.catplot() 函数。在这个例子中,height=8 将图形高度设置为 8 英寸,aspect=15 / 8 控制比例,以达到 15 英寸的宽度。

代码输出:

Seaborn 图形大小 - 输出 5

在使用附带内置参数的 Seaborn 图表类型时,这个方法特别方便。

在 Python 中使用 matplotlib.pyplot.subplots() 函数设置 Seaborn 图表图形大小

matplotlib.pyplot.subplots() 函数提供了一种多功能的方法来设置 Seaborn 图表的图形大小。通过使用这个函数创建图形和坐标轴对象,我们可以在生成图表之前轻松自定义尺寸。

matplotlib.pyplot.subplots() 函数用于创建一个图形和一组子图。这个函数中的 figsize 参数让我们可以以英寸为单位指定整个图形的宽度和高度,各个子图可以通过 Seaborn 坐标轴对象访问,并赋予特定的图表。

当涉及多个子图时,这个方法特别有用,因为它提供了对整体图形大小的精细控制。

使用 matplotlib.pyplot.subplots() 设置 Seaborn 图形大小的示例

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

df = pd.DataFrame(
    {"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)

fig, ax = plt.subplots(figsize=(15, 8))

p = sns.lineplot(data=df, ax=ax)
plt.show()

在这个示例中,关键步骤是使用 plt.subplots(figsize=(15, 8)) 来创建具有指定大小(宽 15 英寸、高 8 英寸)的图形和坐标轴。在绘制 Seaborn 图形时,我们将 ax 参数设置为等于 matplotlib.pyplot.subplots() 返回的坐标轴数组。

代码输出:

Seaborn 图形大小 - 输出 6

这成功生成了一个具有指定 Seaborn 图形大小(宽 15 英寸、高 8 英寸)的折线图。

结论

本文全面探讨了在 Python 中设置 Seaborn 图表图形大小的各种方法,并附上了一些示例。无论是利用 Seaborn 的 height 和 aspect 等内置参数、matplotlib.pyplot.figure() 函数、matplotlib.pyplot.gcf() 函数,还是 matplotlib.pyplot.subplots(),每种方法都提供了一种独特的方式来调整图表的视觉呈现。

掌握这些技巧可以提升您通过视觉上具有影响力的 Seaborn 可视化传达复杂信息的能力,这是数据科学的基石。

作为下一步,探索高级统计可视化可能是一个令人兴奋的方向。具体来说,深入探讨用于相关性分析的 Seaborn 热图这个主题,可以提升您的数据可视化技能。