gpt4 book ai didi

python - pyplot.hist 中的直方图条不以 xticks 为中心

转载 作者:行者123 更新时间:2023-12-02 00:39:20 26 4
gpt4 key购买 nike

我想我只是没有使用正确的关键字,因为之前可能有人问过这个问题,但我没有找到解决方案。无论如何,我有一个问题,直方图的条形图与 xticks 不对齐。我希望条形图以它们对应的 xticks 为中心,但它们被放置在刻度线之间以均匀地填充中间的空间。

enter image description here

import matplotlib.pyplot as plt  

data = [1, 1, 1, 1.5, 2, 4, 4, 4, 4, 4.5, 5, 6, 6.5, 7, 9,9, 9.5]

bins = [x+n for n in range(1, 10) for x in [0.0, 0.5]]+[10.0]

plt.hist(data, bins, rwidth = .3)
plt.xticks(bins)
plt.show()

最佳答案

请注意,您在此处绘制的不是直方图。直方图将是

import matplotlib.pyplot as plt  

data = [1, 1, 1, 1.5, 2, 4, 4, 4, 4, 4.5, 5, 6, 6.5, 7, 9,9, 9.5]

bins = [x+n for n in range(1, 10) for x in [0.0, 0.5]]+[10.0]

plt.hist(data, bins, edgecolor="k", alpha=1)
plt.xticks(bins)
plt.show()

enter image description here

在这里,条形图的范围符合预期。例如。您在区间 1 <= x < 1.5 中有 3 个值.

从概念上讲,您在这里要做的是获取数据值计数的条形图。这根本不需要任何垃圾桶,可以按如下方式完成:

import numpy as np
import matplotlib.pyplot as plt

data = [1, 1, 1, 1.5, 2, 4, 4, 4, 4, 4.5, 5, 6, 6.5, 7, 9,9, 9.5]

u, inv = np.unique(data, return_inverse=True)
counts = np.bincount(inv)

plt.bar(u, counts, width=0.3)

plt.xticks(np.arange(1,10,0.5))
plt.show()

enter image description here

当然,您可以“滥用”直方图来获得类似的结果。这将需要将条形中心移动到左 bin 边缘,plt.hist(.., align="left") .

import matplotlib.pyplot as plt  

data = [1, 1, 1, 1.5, 2, 4, 4, 4, 4, 4.5, 5, 6, 6.5, 7, 9,9, 9.5]

bins = [x+n for n in range(1, 10) for x in [0.0, 0.5]]+[10.0]

plt.hist(data, bins, align="left", rwidth = .6)
plt.xticks(bins)
plt.show()

这会产生与上面相同的图。

关于python - pyplot.hist 中的直方图条不以 xticks 为中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47711871/

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