我希望直方图的每个“单元格”都有一个数字,表示该“单元格”中的总点数百分比而不是颜色。除了以编程方式生成矩阵之外还有其他方法吗? 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()
答案 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()