Python 在银河系坐标系中绘制热图

Python 在银河系坐标系中绘制热图,python,coordinates,astropy,astronomy,map-projections,Python,Coordinates,Astropy,Astronomy,Map Projections,编辑: 好的,我想出了一个糟糕的方法,包括scipy.interpolate.griddata 我有一些二维数组130x360形式的贴图,数组中的每个值对应于该点的测量值 这些地图在赤经(ra)和赤纬(dec)中提供,范围为 ra:0至360度 十二月:-40至90度 我已通过以下方式在赤道坐标系下绘制地图: import matplotlib.pyplot as plt import numpy as np z = np.load('map.npy') fig = plt.figure()

编辑:

好的,我想出了一个糟糕的方法,包括
scipy.interpolate.griddata

我有一些二维数组130x360形式的贴图,数组中的每个值对应于该点的测量值

这些地图在赤经(ra)和赤纬(dec)中提供,范围为

ra:0至360度

十二月:-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
阵列转换为galactic

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, z, cmap=plt.cm.jet, 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和颜色参数有点糟糕