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和颜色参数有点糟糕