gpt4 book ai didi

python条形图不居中

转载 作者:行者123 更新时间:2023-11-28 18:11:56 30 4
gpt4 key购买 nike

我正在尝试构建一个简单的直方图。出于某种原因,我的酒吧表现异常。正如您在这张图片中看到的,“3”上方的横条移到了右侧。我不确定是什么原因造成的。我做了 align='mid' 但它没有修复它。

这是我用来创建它的代码:

def createBarChart(colName):
df[colName].hist(align='mid')
plt.title(str(colName))
RUNS = [1,2,3,4,5]
plt.xticks(RUNS)
plt.show()

for column in colName:
createBarChart(column)

这就是我得到的: bar is not centered over 3

重新创建我的数据:

df = pd.DataFrame(np.random.randint(1,6,size=(100, 4)), columns=list('ABCD'))

感谢您的帮助!

P/s:idk 如果这个信息是相关的,但我使用的是 seaborn-whitegrid 风格。我试图用样本数据重新创建一个图,但它仍然出现。是错误吗?

hist created using random data

最佳答案

hist 函数的行为完全符合预期。默认情况下,它会将您传递的数据分成 10 个 bin,第一个 bin 的左边缘为数据的最小值,最后一个 bin 的右边缘为数据的最大值。下图显示了以这种方式分箱的随机生成的数据,用红色虚线标记分箱的边缘。

Histogram showing bin edges

解决这个问题的方法是自己定义 bin 边缘,稍微调整最小值和最大值以使条形在 x 轴刻度上居中。这可以通过 numpy 的 linspace 函数轻松完成(以随机生成的数据框中的 A 列为例):

bins = np.linspace(df["A"].min() - .5, df["A"].max() + .5, 6)
df["A"].hist(bins=bins)

我们要求 6 个值,因为我们正在定义 bin edges,这将产生 5 个 bin,如下图所示:

Histogram with 5 bins

如果您想保持条形之间的间隙,您可以将 bin 的数量增加到 9 并稍微调整偏移量,但这在所有情况下都不起作用(它在这里起作用,因为每个值都是 1、2、 3、4 或 5)。

bins = np.linspace(df["A"].min() - .25, df["A"].max() + .25, 10)
df["A"].hist(bins=bins)

Histogram with empty bins

最后,由于此数据包含离散值并且您实际上是在绘制计数,您可以使用 value_counts 函数创建一个序列,然后将其绘制为条形图:

df["A"].value_counts().sort_index().plot(kind="bar")
# Provide a 'color' argument if you need all of the bars to look the same.
df["A"].value_counts().sort_index().plot(kind="bar", color="steelblue")

Histogram created with value_counts

关于python条形图不居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50500873/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com