Seaborn 主题风格

Seaborn 主题风格函数

对于 Seaborn 来说,它为我们提供了 5 种不同的主题风格,这样也是为了让图表的用户体验更好。在 Seaborn 中,我们可以使用 set_theme() 函数来设置一种主题风格。

语法:

sns.set_theme(style)

说明:

参数 style 是主题风格的名字,它有 5 种取值,如下表所示。

参数 style 取值
取值 说明
ticks 带刻线的白色背景
white 白色背景
dark 灰色背景
whitegrid 白色网格
darkgrid(默认值) 灰色网格

除了 set_theme() 函数之外,还有一个 set_style() 函数。下面 2 种方式是等价的。

# 方式1
sns.set_theme(style='ticks')

# 方式2
sns.set_style(style='ticks')

注意: 在 Seaborn 0.11+ 版本中,仅导入库而不使用 set_theme() 时,则 Seaborn 会使用 Matplotlib 默认外观(类似 "ticks")。但如果调用 sns.set_theme() 而不传参,则 Seaborn 会默认使用 "darkgrid" 主题。

Seaborn 主题风格示例

接下来,我们通过一个简单例子来介绍一下 Seaborn 是如何设置主题风格的。

示例:Seaborn 设置主题风格

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

# 设置主题,并解决乱码
sns.set_theme(style="darkgrid", rc={'font.sans-serif': 'SimHei', 'axes.unicode_minus': False})

# 数据
data = [
    ['2025-01-01', 16],
    ['2025-01-02', 15],
    ['2025-01-03', 16],
    ['2025-01-04', 18],
    ['2025-01-05', 17]
]
df = pd.DataFrame(data, columns=['日期', '气温'])
df.set_index('日期', inplace=True)
# 绘图
sns.lineplot(data=df)

# 显示
plt.show()

运行之后,效果如下图所示。

Seaborn 默认主题

分析:

需要特别注意一点,如果图表包含中文,我们需要使用 set_theme() 设置 “主题” 的同时,还要给它设置一个 “中文字体”,否则就会导致显示乱码。

# 设置主题,并解决乱码
sns.set_theme(style="darkgrid", rc={'font.sans-serif': 'SimHei', 'axes.unicode_minus': False})

其中,'font.sans-serif': 'SimHei' 表示设置字体为 “SimHei(宋体)”,这样有中文就不会显示乱码。而 'axes.unicode_minus': False 用于解决负号显示为方块(乱码)的问题,小伙伴们将其看成是固定写法即可。

接下来我们尝试修改 set_theme() 的主题参数值,然后看看不同取值的效果又是怎样的。当取值为 “white” 时,效果如下图所示。需要注意的是,当主题为 “white” 时,坐标轴是不带刻度标识的。而当主题为 “ticks” 时,坐标轴是带刻度标识的。

Seaborn “white” 主题

当取值为 “dark” 时,使用的是暗色主题,效果如下图所示。

Seaborn “dark” 主题

当取值为 “whitegrid” 时,使用的是白色主题并且是带网格的,效果如下图所示。

Seaborn “whitegrid” 主题

当取值为 “darkgrid” 时,使用的是暗色主题并且是带网格的,效果如下图所示。

Seaborn “darkgrid” 主题

也就是说,下面 2 种方式是等价的。在后面章节中,我们优先使用方式 2 这种简写语法。

# 方式 1
sns.set_theme(style="darkgrid", rc={'font.sans-serif': 'SimHei', 'axes.unicode_minus': False})

# 方式 2
sns.set_theme(rc={'font.sans-serif': 'SimHei', 'axes.unicode_minus': False})

在实际开发中,如果是使用 Seaborn 来绘图,我们更多是推荐使用 “darkgrid” 这种主题风格。因为它相对于其他风格来说更具有 Seaborn 特色,并且用户体验也更好。

上一篇: Seaborn 教程

下一篇: Seaborn 标题

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号