首页 > 解决方案 > seaborn 如何更改垃圾箱的宽度

问题描述

我有一个等级表,我希望所有的箱子都在相同的宽度

我希望垃圾箱在 [0,56,60,65,70,80,85,90,95,100] 的范围内,当第一个垃圾箱从 0-56 到 56-60 时......宽度相同

sns.set_style('darkgrid') 
newBins = [0,56,60,65,70,80,85,90,95,100]

sns.displot(data= scores  , bins=newBins)

plt.xlabel('grade')
plt.xlim(0,100)
plt.xticks(newBins);

具有不平衡箱的直方图

不是我要找的:

在此处输入图像描述

我怎样才能平衡垃圾箱的宽度?

标签: pythonmatplotlibseaborn

解决方案


你需要作弊一点。定义您自己的垃圾箱并使用线性范围命名垃圾箱。这是一个例子:

s = pd.Series(np.random.randint(100, size=100000))
bins = [-0.1, 50, 75, 95, 101]
s2 = pd.cut(s, bins=bins, labels=range(len(bins)-1))
ax = s2.astype(int).plot.hist(bins=len(bins)-
1)
ax.set_xticks(np.linspace(0, len(bins)-2, len(bins)))
ax.set_xticklabels(bins)

输出:

在此处输入图像描述

老答案:

为什么不让 seaborn 为您挑选垃圾箱:

sns.displot(data=scores, bins='auto')

或设置您想要的垃圾箱数量:

sns.displot(data=scores, bins=10)

它们将均匀分布


推荐阅读