如何在pyplot.hist2d的每个“单元格”中绘制点的百分比?

时间:2016-08-11 07:24:30

标签: python matplotlib histogram

我希望直方图的每个“单元格”都有一个数字,表示该“单元格”中的总点数百分比而不是颜色。除了以编程方式生成矩阵之外还有其他方法吗? 2D histogram of my data

M.T的建议中,我认为seaborn.heatmap()要求提供2D数据数组。但是我有两个一维数组(比如高度和重量,每个数据点都是一个有(高度,重量)值的人。代码在这里:)并且数组值没有特定的顺序。示例代码:

plt.hist2d(height, weight, (20, 50), range=np.array([(0, 200), (0, 500)]), cmap=plt.cm.Paired)
plt.colorbar()
plt.show()

1 个答案:

答案 0 :(得分:1)

您可以使用文本并将输出循环到标准hist2d,如下所示,

import numpy as np
import matplotlib.pyplot as plt

height = [102, 99, 153, 98, 142, 198, 99]
weight = [201, 192, 295, 181, 315, 311, 181]

counts, xedges, yedges, Image = plt.hist2d(height, weight, (20, 50), 
                                           range=np.array([(0, 200), (0, 500)]), 
                                           cmap=plt.cm.Paired, normed=True)

dx = xedges[2]-xedges[1]
dy = yedges[2]-yedges[1]
for i in range(xedges.size-1):
    for j in range(yedges.size-1):
        xb = xedges[i] + 0.25*dx
        yb = yedges[j] + 0.25*dy 
        plt.text(xb, yb, str(np.round(100.*counts[i,j],2)), fontsize=6 )

plt.show()

给出, enter image description here