我有一张地图,我希望覆盖颜色权重贴图。权重贴图有m x n
1m x 1m
个框。我有很多分,每个点都有重量。通过总计落入该框中的所有点的权重来计算框的权重。
现在根据他们的意愿,每个盒子根据其重量填充一定的颜色。
期望的结果类似于the one shown here,但
我怎么能这样做?
答案 0 :(得分:1)
如果我理解正确:你有一组点,每个点都有一个x坐标,一个y坐标和一个与之相关的权重。
您链接的问题中的答案已经完全描述了您想要做的事情。唯一的区别是您可以使用weights=
参数来获取每个bin中的加权计数。
例如,您可以使用
wcounts, xedges, yedges = np.histogram2d(x, y, weights=w)
获取加权直方图,然后执行
extent = xedges[0], xedges[-1], yedges[0], yedges[-1]
imshow(wcounts, extent=extent, alpha=0.5)
显示它。
我不知道你在'地图'上覆盖它是什么意思,但你可以使用alpha=
参数imshow()
来使图像半透明(或者你可以画您的“地图”位于图片顶部。)
同样,你可以做到
hexbin(x, y, C=w, alpha=0.5)
绘制加权六边形分箱图,在这种情况下使用C=
参数指定权重,并再次使用alpha=
来控制图的透明度。
好的,所以你想在指定的bin位置网格上计算直方图。假设您的x坐标位于0m和100m之间,您的y坐标介于0m和75m之间,并且您希望每个bin都是1m乘1m。您可以将指定x和y中的bin边的数组元组传递给np.histogram2d()
:
# remember that for n bins there are n+1 bin edges
x_edges = np.linspace(0, 100, 101)
y_edges = np.linspace(0, 75, 76)
wcounts = np.histogram2d(x, y, weights=w, bins=(x_edges, y_edges))[0]
现在wcounts
是一个(100, 75)
数组,每个元素代表一个1米乘1米的加权计数。