如何解决在银河系坐标中绘制热图
编辑:
好吧,我想出了一种scipy.interpolate.griddata
我有一些地图以二维数组130x360的形式出现,数组中的每个值都对应于该点的测量。
这些地图以右上角(ra)和偏角(dec)提供,范围来自于
ra:0到360度
dec:-40至90度
我设法通过以下方法在赤道坐标上绘制地图:
import matplotlib.pyplot as plt
import numpy as np
z = np.load('map.npy')
fig = plt.figure()
ax = fig.add_subplot(111,projection='aitoff')
ra = np.linspace(-np.pi,np.pi,360)
dec = np.linspace(-40 * np.pi/180,np.pi/2,130)
Ra,Dec = np.meshgrid(ra,dec)
im = ax.pcolormesh(Ra,Dec,z,cmap=plt.cm.jet,norm=colors.LogNorm(vmax=z.max()))
plt.grid()
plt.show()
这给了我以下图:
我现在希望将此图转换为银河系坐标,以便银河系的波段遍及图像。
我尝试使用astropy的SkyCoord模块将Ra
和Dec
数组转换为银河
from astropy.coordinates import SkyCoord
coords = SkyCoord(ra=Ra,dec=Dec,unit='rad').galactic
B = coords.galactic.b.rad
L = coords.galactic.l.rad
im = ax.pcolormesh(L,B,norm=colors.LogNorm(vmax=np.nanmax(z)))
我得到的东西看起来像这样
不太正确...
我还创建了一个列表
ra
,dec
和z
用于我图像中的每个点,并将每个点转换为银河坐标,
也许我可以将其转换回所需的正确形状,以便可以使用pcolormesh进行绘制?
使用下面的代码是这样的
x_list = np.array(df['GLON_rad'])
y_list = np.array(df['GLAT_rad'])
z_list = np.array(df['z'])
coords = SkyCoord(l=x_list,b=y_list,unit='rad',frame="galactic")
plt.figure()
plt.subplot(111,projection='aitoff')
plt.scatter(-coords.l.wrap_at('180d').radian,coords.b.radian,c=z_list,cmap='plasma',norm=colors.LogNorm(vmax=np.nanmax(z)))
肯定在正确的轨道上,但是还不完全正确,因为我觉得使用带有颜色参数的plt.scatter有点笨拙。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。