You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib及Seaborn如何将自定义不等距分箱设置为相同显示宽度

自定义不等宽分箱实现等宽显示直方图解决方案

问题根因

你当前使用的sns.displot绘制直方图时,默认采用数值型x轴,会严格按照你定义的分箱的实际数值间隔分配x轴显示宽度,因此宽度更大的分箱(如056)会比小间隔分箱(如5660)显示得更宽,这是直方图的默认数学表现,但不符合你的可视化展示需求。

解决方案

你需要的本质是按自定义区间分组后的等宽频数柱状图,先对原始成绩做分箱编码,再用分类轴的柱状图绘制即可,完整调整代码如下:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

sns.set_style('darkgrid') 
newBins = [0,56,60,65,70,80,85,90,95,100]
# 自定义分箱显示标签
bin_labels = [f'{newBins[i]}~{newBins[i+1]}' for i in range(len(newBins)-1)]
# 对原始成绩做分箱处理,include_lowest=True保证边界值0被正确归类
scores_binned = pd.cut(scores, bins=newBins, labels=bin_labels, include_lowest=True)

# 绘制等宽柱状图
sns.countplot(x=scores_binned)

plt.xlabel('grade')
plt.ylabel('count')
# 若分箱标签显示拥挤可打开下方注释调整旋转角度
# plt.xticks(rotation=30)
plt.show()

效果说明

该方案将x轴转换为分类轴,每个分箱对应一个分类项,所有分类项的显示宽度完全一致,同时保留了你自定义的分箱统计逻辑,最终呈现效果完全符合需求。

内容的提问来源于stack exchange,提问作者itay k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 13:42:01