我有一個星系列表可以繪製到healpix地圖上(我使用healpy來做)每個星系都有一個通量集,我需要讓它們以這樣一種方式繪圖:通量對於每個星系在地圖上是守恆的。用HEALPy保存像素數
這是我的代碼:
import numpy as np
import matplotlib.pyplot as plt
import healpy as hp
pi = np.pi
nside = 8
xsize = 100
ra = np.array([pi/4,pi/3])
dec = np.array([pi/4,pi/3])
flux = np.array([10,20])
hpm = np.zeros(hp.nside2npix(nside)) #Blank healpix map
pixindex = hp.ang2pix(nside, dec, ra)
np.add.at(hpm,pixindex,flux) #Add flux onto correct pixels
img=hp.mollview(hpm,coord=['E'],xsize=xsize,return_projected_map=True)
print(np.sum(img[img>0]))
結果我得到的是140,而不是30,其通量的真正總和。
我得到的是怎麼回事,而且相同的磁通被分散在多個像素(6第一星系和4個像素爲秒),我知道我可能只是這樣做:
newimg = img * (np.sum(flux)/np.sum(img[img>0]))
這將保存總光子數,但它不一定會保存每個星系的光子數,這是我所需要的。即這種方法結束時第一個星系的通量爲12.86,第二個星系的通量爲17.14。
有沒有一種方法可以在每個座標將佔用多少像素之前制定出來,然後根據這個數據改變通量傾倒量?
在此先感謝!