1

我有六边形分箱数据,并使用 C=vel 按速度对代码进行颜色编码。这很好用,但我想要一个计算标准偏差的列表和每个六角星中对象数量的列表。我用:

imageh=plt.hexbin(x,y,C=vel,extent[np.min(x),np.max(x),np.min(y),np.max(y)],alpha=0.7,gridsize=20,cmap=get_cmap("jet"),reduce_C_function=np.std,mincnt=5)
cbar=plt.colorbar(imageh,extend='max')

'reduce_C_function=np.std' 为我提供了每个六角星中速度 (vel) 的标准偏差,这是我想要的,但我也希望它能够将矢量打印到屏幕上。坐标 x 和 y 可以通过以下方式检索:

bv=imageh.get_paths()
for j in xrange(len(bv)):
    xav=np.mean(bv[j].vertices[0:6,0])
    yav=np.mean(bv[j].vertices[0:6,1])

我以为我可以用 get_array 和 get_offset 得到每个六边形中的项目数:

counts=imageh.get_array() 
verts=imageh.get_offsets() 

但是我的 get_offsets() 创建了一个空向量,而 get_array() 似乎返回了每个六边形的平均速度值......我的速度值“vel”是 5513 个项目长,counts=imageh.get_array() 在与我的速度范围相同。我再次运行它三次以确保第三次尝试 get_array() 返回标准偏差范围内的 146 个值。如果属实,这将解决部分问题。

我想要的是速度的计算标准偏差......图像颜色条上使用的“reduce_C_function”的输出。我也只想要在每个六角星中找到的数字。目标是获取每个六边形的每个标准差,除以该六边形中的点数并创建加权标准差。我可以通过运行单独获得原始图像的六角星中的点数:

imageh=plt.hexbin(x,y,extent[np.min(x),np.max(x),np.min(y),np.max(y)],alpha=0.7,gridsize=20,cmap=get_cmap("jet"),mincnt=5)

然后使用 get_array() 但我一直在想肯定有一种方法可以从原始语句中获取每个 hexbin 中的项目数?另外,如果您在速度上包含一个 np.mean 过滤器(第一个示例),作为一个额外的复杂因素,点和 bin 的数量会略有不同......所以直接从查询中选择每个六边形中的数字是最好的。

4

0 回答 0