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
相关产品推荐
相关产品推荐

