我有一个希望简单的问题。在某些空间数据(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()
- 根据我添加数据进行测试的请求......我的数据相当冗长且笨拙,但这是一个说明问题的独立版本。这是 '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 方向上偏移,积分应该只是在一个方向上,在另一个变量上,即行和列。理论上,我希望我有数据的每一行和每一列都有边际。