为什么seaborn CountPlot和HistPlot显示相同的十六进制颜色不同?

2024-05-19 14:01:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在我的论文中保留一个单一的调色板,我注意到histplots的蓝色和countplots的蓝色略有不同,尽管我将它们设置为完全相同的十六进制值

是否有我遗漏的设置,或者这些不同的绘图是否只显示给定的十六进制?我尝试过使用countplot饱和度,但它与颜色不匹配。理想情况下,我的所有HistPlot都将具有与countplot相同的颜色(以及也使用countplot颜色的条形图)

下面是一个最低限度的代码示例:

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(rc={'figure.figsize':(20,10)}, font_scale=2)
plt.rcParams['axes.grid'] = False
titanic = sns.load_dataset('titanic')
fig, ax = plt.subplots(1,2)
sns.countplot(x="class", data=titanic, ax=ax[0], color='#5975a4')
sns.histplot(x="who", data=titanic, ax=ax[1], color='#5975a4')

它生成以下图形:

Different Blues


Tags: importdata颜色aspltaxcolor蓝色
1条回答
网友
1楼 · 发布于 2024-05-19 14:01:01

^{}有一个饱和度参数(饱和度越高,颜色越“真实”,饱和度越低,颜色越接近灰色)。Seaborn在条形图中使用饱和度使默认颜色看起来“更平滑”。默认饱和度为0.75;可以将其设置为1以获得“真实”颜色

histplot有一个alpha参数,使颜色半透明。颜色与背景混合,因此根据背景颜色的不同,颜色看起来也不同。在本例中,alpha似乎默认为0.75。因为这也有类似于饱和的效果,所以histplot不使用饱和。当在同一子图中绘制多个直方图时,透明度特别有用

要获得“真实”颜色,请将countplotsaturationhistplotalpha设置为1:

import seaborn as sns
import matplotlib.pyplot as plt

sns.set(rc={'figure.figsize': (20, 10)}, font_scale=2)
plt.rcParams['axes.grid'] = False
titanic = sns.load_dataset('titanic')
fig, ax = plt.subplots(1, 2)
sns.countplot(x="class", data=titanic, ax=ax[0], color='#5975a4', saturation=1)
sns.histplot(x="who", data=titanic, ax=ax[1], color='#5975a4', alpha=1)
plt.show()

sns.histplot and sns.countplot with "full" color

PS:默认情况下,countplot仅使用宽度的80%,而直方图使用全宽度。如果需要,可以缩小直方图条,例如sns.histplot(..., shrink=0.8),以获得与countplot相同的宽度

相关问题 更多 >