从histogram,python matplotlib创建条形图

时间:2014-04-27 14:08:04

标签: python matplotlib histogram

我有这样的直方图:

Histogram

我的数据以这种方式附加存储:

(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中切割白色区域,也欢迎。

我还希望显示每列的顶部计数器,但我不知道该怎么做。

1 个答案:

答案 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()

Plot