有简单的直方图功能吗?

时间:2016-03-23 15:16:51

标签: python matlab histogram

对于数据diffs07diffs14,在Matlab中,我只需使用以下内容即可获取分箱数据的x和y坐标:

[ys07, xs07] = hist(-log10(diffs07), 250);
[ys14, xs14] = hist(-log10(diffs14), 250);

然而,在Python中,我无法找到一种直截了当的方式,所以我正在使用:

xs_diffs = np.linspace(0, 17, 250)
dx = xs_diffs[1]-xs_diffs[2]
ys07 = []
ys14 = []
for x in xs_diffs:
    ys07.append( len( [ ty for ty in diffs07 if (-np.log10(ty)-dx/2.0 < x and -np.log10(ty) < x+dx/2.0) ] ) ) 
    ys14.append( len( [ ty for ty in diffs14 if (-np.log10(ty)-dx/2.0 < x and -np.log10(ty) < x+dx/2.0) ] ) ) 

plt.plot(xs_diffs, ys07, 'r.', xs_diffs, ys14, 'b.')
plt.show()

但与Matlab代码相比,这需要相当长的时间。在Python

中是否有一种直截了当(更快!)的方法

1 个答案:

答案 0 :(得分:5)

OleDbType

用于自动选择bin(Matlab相当于你的第一个语句)。可替代地,

hist, bin_edges = np.histogram(diffs07,bins=250)
如果要根据初始尝试指定使用的箱柜范围,则应使用

Matplotlib还有非常有用的hist, bin_edges = np.histogram(diffs07,bins=np.linspace(0,17,250)) 用于即时绘图,同样可以选择自动或设置分档。