gpt4 book ai didi

python - 将值放在直方图的 bin 中心

转载 作者:太空宇宙 更新时间:2023-11-03 13:15:12 25 4
gpt4 key购买 nike

我有以下代码来绘制直方图。 time_new 中的值是某事发生的时间。

    time_new=[9, 23, 19, 9, 1, 2, 19, 5, 4, 20, 23, 10, 20, 5, 21, 17, 4, 13, 8, 13, 6, 19, 9, 14, 9, 10, 23, 19, 23, 20, 19, 6, 5, 24, 20, 19, 15, 14, 19, 14, 15, 21]

hour_list = time_new
print hour_list
numbers=[x for x in xrange(0,24)]
labels=map(lambda x: str(x), numbers)
plt.xticks(numbers, labels)
plt.xlim(0,24)
pdb.set_trace()
plt.hist(hour_list,bins=24)
plt.show()

这会生成一个直方图,但 bin 没有按我希望的那样对齐。我希望时间位于容器的中央,而不是边缘。

Histogram of time_new with default bins

我提到了 this question / answer , 但它似乎也没有回答这个问题。

我尝试使用以下代码绘制直方图,但它没有为值 23

绘制条形图
plt.hist(hour_list, bins=np.arange(24)-0.5)

histogram with bin range specified

谁能帮我弄到 24 个箱子,每个箱子的中心是小时?

最佳答案

要获得 24 个 bin,您需要在序列中定义 bin 边缘的 25 个值。 n 个 bin 总是有 n+1 个边。

所以,改变你的路线

plt.hist(hour_list,bins=np.arange(24)-0.5)

plt.hist(hour_list,bins=np.arange(25)-0.5)

注意 - 您的测试数据应该包含两种边缘情况。如果您只是通过四舍五入来提取小时数,则列表中应该有一些 0 值。


完整示例:

import matplotlib.pyplot as plt
import numpy as np

def plot_my_time_based_histogram():
#Note - changed the 24 values for 0
time_new=[9, 23, 19, 9, 1, 2, 19, 5, 4, 20, 23, 10, 20, 5, 21, 17, 4, 13, 8, 13, 6, 19, 9, 14, 9, 10, 23, 19, 23, 20, 19, 6, 5, 0, 20, 19, 15, 14, 19, 14, 15, 21]
fig, ax = plt.subplots()
hour_list = time_new
print hour_list
numbers=[x for x in xrange(0,24)]
labels=map(lambda x: str(x), numbers)
plt.xticks(numbers, labels)
#Make limit slightly lower to accommodate width of 0:00 bar
plt.xlim(-0.5,24)
plt.hist(hour_list,bins=np.arange(25)-0.5)

# Further to comments, OP wants arbitrary labels too.
labels=[str(t)+':00' for t in range(24)]
ax.set_xticklabels(labels)
plt.show()

plot_my_time_based_histogram()

结果:

histogram with centred bins

关于python - 将值放在直方图的 bin 中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32453225/

25 4 0