如何在Seaborn双分布直方图中移除指定KDE曲线并保留所有直方图?
实现保留单个KDE曲线的双分布直方图
方法1:绘制后手动移除目标KDE曲线
sns.displot返回FacetGrid对象,我们可以通过它的轴元素找到并移除蓝色的KDE曲线,保留橙色KDE和两个直方图。
修改后的代码:
import seaborn as sns import matplotlib.pyplot as plt # 绘制双分布直方图及双KDE曲线 g = sns.displot( [Afa2['Normal Score Modified'], Afa2['Normal Score']], kde=True, stat='density', figsize=(15,10) ) # 获取绘图轴上的所有线条(KDE曲线属于lines集合) lines = g.axes[0,0].lines # 蓝色KDE对应第一条线(索引0),直接移除 lines[0].remove() # 设置坐标轴范围 plt.ylim(0,0.25) plt.xlim(-3,3) plt.show()
方法2:分开绘制直方图与单个KDE
先绘制不带KDE的双分布直方图,再单独为橙色分布添加KDE曲线,逻辑更清晰可控。
修改后的代码:
import seaborn as sns import matplotlib.pyplot as plt plt.figure(figsize=(15,10)) # 绘制两个分布的直方图,关闭KDE sns.histplot( data=[Afa2['Normal Score Modified'], Afa2['Normal Score']], stat='density', kde=False ) # 单独为第二个分布(橙色)绘制KDE曲线 sns.kdeplot(data=Afa2['Normal Score'], stat='density') # 设置坐标轴范围 plt.ylim(0,0.25) plt.xlim(-3,3) plt.show()
内容的提问来源于stack exchange,提问作者Benjamin Bigarré
相关产品推荐
相关产品推荐

