sns.kdeplot() https://seaborn.pydata.org/generated/seaborn.kdeplot.html有一个参数common_norm=
默认为True
。在这种情况下,kde 曲线将与值的数量成比例缩放,以使总面积总和为 1。common_norm=False
显示所有 kde 曲线,其中每条曲线的面积均为 1。
请注意,还有一个multiple=
参数,默认为“layer”
,但也可以设置为“stack”
or “fill”
。在这种情况下,共同规范将是适当的。
这些曲线都可以是灰色的,提供调色板作为带有“灰色”的颜色列表。列表的长度应与色调值的数量相同。由于所有色调值都相同,因此图例看起来会很奇怪。图例可以通过以下方式抑制legend=False
.
当色调值仅出现在一行中时,不会绘制具有一个元素的 kdeplot,但会显示警告Dataset has 0 variance; skipping density estimate
.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
df = pd.DataFrame({'name': np.random.choice([*'ABCD'], 100, p=[0.4, 0.3, 0.2, 0.1]),
'val': np.random.rand(100).cumsum()})
df.loc[0, 'name'] = 'E' # exactly one row with name 'E'
df['name'] = df['name'].astype('category')
sns.kdeplot(data=df, x='val', hue='name', palette=['grey'] * len(df['name'].cat.categories),
common_norm=False, legend=False)
plt.show()