Seaborn histplot绘图每两值间有空隙:是否为预期行为及修改方法?
问题
我尝试用Seaborn的histplot展示DataFrame中overall列的数据,该列包含47到93之间的所有整数值,但绘图后发现每两个数值对应的柱子之间有空隙。想知道这是不是预期行为,以及怎么修改能消除空隙?
使用的代码:
sns.histplot(data['overall'])

解答
这是histplot的预期行为:默认情况下它会按连续数据的逻辑自动划分区间(bins),但你的数据是离散整数,自动生成的区间边界会落在整数之间,导致每个柱子只对应单个整数,柱子间出现空隙。
消除空隙有两种简单有效的方式:
方式一:手动指定对齐整数的区间
通过bins参数设置刚好覆盖每个整数的区间,让每个整数被完整包含在一个区间内,柱子就会紧密排列:
# 直接指定覆盖目标整数范围的区间 sns.histplot(data['overall'], bins=range(46, 94)) # 更通用的写法,适配任意整数范围 min_val = data['overall'].min() max_val = data['overall'].max() sns.histplot(data['overall'], bins=range(min_val - 1, max_val + 2))
方式二:启用离散数据模式
给histplot添加discrete=True参数,Seaborn会自动识别离散整数数据,直接为每个整数创建柱子,同时自动消除空隙:
sns.histplot(data['overall'], discrete=True)
内容的提问来源于stack exchange,提问作者Marc Marcos
相关产品推荐
相关产品推荐

