You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Seaborn catplot仅显示蓝色无默认彩虹色问题求助

问题描述

运行以下代码绘制的条形图仅显示单一蓝色,尝试过sns.reset_orig()和设置Matplotlib调色板都无法恢复多色的默认彩虹调色板:

import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt

import seaborn as sns

penguins = sns.load_dataset('penguins')
sns.catplot(data = penguins, x='island', kind='count')

plt.show()

环境信息:Seaborn 0.13.2,Matplotlib 3.7.1,设备为MacBook

解决方法

方法1:直接指定调色板参数

在catplot函数中添加palette参数,指定为标准彩虹风格的"tab10"调色板,这是最直接的解决方案:

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

penguins = sns.load_dataset('penguins')
sns.catplot(data=penguins, x='island', kind='count', palette="tab10")

plt.show()

方法2:全局设置Seaborn默认调色板

如果希望后续所有绘图都使用多色调色板,可全局重置Seaborn主题并设置默认调色板:

import seaborn as sns
import matplotlib.pyplot as plt

# 重置为Seaborn默认主题
sns.set_theme()
# 设置全局默认分类调色板为tab10
sns.set_palette("tab10")

penguins = sns.load_dataset('penguins')
sns.catplot(data=penguins, x='island', kind='count')
plt.show()

方法3:重置Matplotlib配置

若sns.reset_orig()未生效,可直接重置Matplotlib的默认配置并指定调色板:

import matplotlib.pyplot as plt
import seaborn as sns

# 重置Matplotlib到初始配置
plt.rcParams.update(plt.rcParamsDefault)
# 设置Matplotlib默认循环颜色为tab10调色板
plt.rcParams['axes.prop_cycle'] = plt.cycler(color=plt.get_cmap('tab10').colors)

penguins = sns.load_dataset('penguins')
sns.catplot(data=penguins, x='island', kind='count')
plt.show()

补充说明

Seaborn 0.13.x版本调整了默认主题的部分配色逻辑,部分环境下分类绘图会默认使用单一色调的渐变,而tab10是旧版默认的彩虹风格调色板,能完美匹配你需要的多色效果。

内容的提问来源于stack exchange,提问作者Biying Zhang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 14:00:57