我有这样的直方图:
我的数据以这种方式附加存储:
(while parsing the file)
{
[...]
a.append(int(number))
#a = [1,1,2,1,1, ]...
}
plt.hist(a, 180)
但是从图像中可以看出,有很多空白区域,所以我想根据这些数据构建一个条形图,如何重新组织它们:
#a = [ 1: 4023, 2: 3043, 3:...]
其中1是“数字”,而4023是数字1的“命中”数量的示例?从我以这种方式看到的,我可以打电话:
plt.bar(...)
并创建它,以便我只显示相关数字,具有更高的可读性。 如果有一种简单的方法可以在Histo中切割白色区域,也欢迎。
我还希望显示每列的顶部计数器,但我不知道该怎么做。
答案 0 :(得分:3)
假设你有一些充满整数的numpy数组a
,那么下面的代码将产生你想要的条形图。
它使用np.bincount
来计算值的数量,请注意,它仅适用于非负整数。
另请注意,我已调整了索引,使得绘图集中而不是向左(使用ind-width/2.
)。
import matplotlib.pyplot as plt
import numpy as np
# Generate some random data.
N=300
a = np.random.random_integers(low=0, high=20, size=N)
# Use bincount and nonzero to generate your data in the correct format.
b = np.bincount(a)
ind = np.nonzero(b)[0]
width=0.8
fig, ax = plt.subplots()
ax.bar(ind-width/2., b)
plt.show()