2

我有一个希望简单的问题。在某些空间数据(Ra 和 Dec 是 x 和 y)上使用 python hexbin 绘图选项时,我还希望看到侧面的边缘。幸运的是,有一个简单的选项'marginals = True'....

不幸的是,正如您在下面看到的...... x 轴边缘明显偏离了六边形生成的图像。我尝试过调整参数,但 x 轴上的边缘总是出现偏移图像(y 似乎从来没有问题),任何想法都将不胜感激。请看下面的代码和图片,在此先感谢!

fig5=plt.figure(5)

ax=fig5.add_subplot(111)

imageh=plt.hexbin(Radeg[CoreL],
                  Decdeg[CoreL],
                  extent=[np.min(Radeg[CoreL]), np.max(Radeg[CoreL]), np.min(Decdeg[CoreL]), np.max(Decdeg[CoreL])],
                  alpha=0.7,
                  gridsize=20,
                  marginals=True,
                  vmin=5,
                  vmax=105,
                  cmap=get_cmap("jet"),
                  mincnt=5)

ax.axis([305,275,-40,-25])

cbar=plt.colorbar(imageh,extend='max')

cbar.set_label(r'$\mathrm{Counts}$',fontsize=18)

ax.set_xlabel(r'$\mathrm{RA}$',fontsize=20)

ax.set_ylabel(r'$\mathrm{DEC}$',fontsize=18)

plt.show()

hexbin 生成的计数图像

- 根据我添加数据进行测试的请求......我的数据相当冗长且笨拙,但这是一个说明问题的独立版本。这是 'Hooked' 的修改版本,后者针对不同的 hexbin 问题发布。

def generate_data(n):
    """Make random, correlated x & y arrays"""
    points = np.random.multivariate_normal(mean=(0,0),
        cov=[[0.4,9],[9,10]],size=int(n))
    return points

if __name__ =='__main__':

    color_map = plt.cm.Spectral_r
    n = 1e4
    points = generate_data(n)

    xbnds = np.array([-20.0,20.0])
    ybnds = np.array([-20.0,20.0])
    extent = [xbnds[0],xbnds[1],ybnds[0],ybnds[1]]

    fig=plt.figure(figsize=(10,9))
    ax = fig.add_subplot(111)
    x, y = points.T
    image = plt.hexbin(x,y,cmap=color_map,gridsize=20,marginals=True,extent=extent,mincnt=1,bins='log')
    ax.set_xlim(xbnds)
    ax.set_ylim(ybnds)
    plt.grid(True)
    cb = plt.colorbar(image,spacing='uniform',extend='max')
    plt.show()

这段代码给出了类似的图像,但这次边缘在 x 和 y 方向上偏移,积分应该只是在一个方向上,在另一个变量上,即行和列。理论上,我希望我有数据的每一行和每一列都有边际。

新代码图像的边缘

4

0 回答 0