具有标准化行的2D直方图

时间:2015-08-12 06:01:38

标签: python matplotlib plot 2d histogram

我想绘制一个2D直方图,每行标准化。我正在使用以下代码:

H, xedges, yedges = np.histogram2d(charged_zgs, zgs, weights=prescales, normed=1, range=[[0, 0.5], [0, 0.5]], bins=25)
Hmasked = np.ma.masked_where(H==0,H) # Mask pixels with a value of zero

plt.pcolormesh(xedges,yedges,Hmasked)

cbar = plt.colorbar()
cbar.ax.set_ylabel('Counts')  

plt.show()

但是,normed=1位使得双积分为1,而我希望每个行都被规范化。

我以为我可以使用一个元组列表作为权重,我可以手动规范化,但后来意识到参数权重必须是一维列表。

2 个答案:

答案 0 :(得分:1)

您可以使用keepdims=True

来避免全部转置
H_norm_rows = H / H.max(axis=1, keepdims=True)

答案 1 :(得分:0)

如果要标准化每一行,可以使用:

H_norm_rows = (H.T/np.sum(H,axis=1)).T