私は滑らかなヒーププリックスマップ(添付図、LHS参照)を作成したい128ポイントからなる粗いスカイマップを持っています。本文中で参照数字:私は私のデータをロード補間後のヒラルピ座標誤差:二等分線の出現
、最終的なマップのための適切なピクセル長(と例えばn側= 32)の新たな経度と緯度のアレイを作ります。
私の入力データは以下のとおりです。n側からのピクセル数に基づいて
lats = pi/2 + ths # theta from 0, pi, size 8
lons = phs # phi from 0, 2pi, size 16
data = sky_data[0] # shape (8,16)
新経度/緯度配列サイズ:
nside = 32
pixIdx = hp.nside2npix(nside) # number of pixels I can get from this nside
pixIdx = np.arange(pixIdx) # pixel index numbers
私は、補間によってこれらのピクセルのための新しいデータ値を見つけ、次に角度からピクセルに変換することができます。
# new lon/lat
new_lats = hp.pix2ang(nside, pixIdx)[0] # thetas I need to populate with interpolated theta values
new_lons = hp.pix2ang(nside, pixIdx)[1] # phis, same
# interpolation
lut = RectSphereBivariateSpline(lats, lons, data, pole_values=4e-14)
data_interp = lut.ev(new_lats.ravel(), new_lons.ravel()) #interpolate the data
pix = hp.ang2pix(nside, new_lats, new_lons) # convert latitudes and longitudes back to pixels
そして、Iは補間値とhealpyマップ構築:
healpix_map = np.zeros(hp.nside2npix(nside), dtype=np.double) # create empty map
healpix_map[pix] = data_interp # assign pixels to new interpolated values
testmap = hp.mollview(healpix_map)
地図の結果は、添付図の上部RHSあります。
(ジェットの使用を許す - ビリディスがゼロ「白」を持っていないので、そのカラーマップを使用すると、青い背景が追加されます。)
マップが正しく表示されません:あなたはから見ることができます下のRHSに「ホットスポット」があるはずですが、ここでは左上に表示されています。
は、健全性チェックとして、私はそれがマップのように見えるようにマーカのエッジを除去mollview投影、図2における補間点の散布図を作るためにmatplotlibの使用;)
ax = plt.subplot(111, projection='astro mollweide')
ax.grid()
colors = data_interp
sky=plt.scatter(new_lons, new_lats-pi/2, c = colors, edgecolors='none', cmap ='jet')
plt.colorbar(sky, orientation = 'horizontal')
添付のFigureのRHSが低いこのマップは、私が期待しているものを正確に生成していることがわかります!座標は大丈夫です。私は完全に混乱しています。
誰もこれまでに遭遇したことはありますか?私に何ができる?私はこのマップと将来のマップでhealpy関数を使用したいので、matplotlibを使用するだけではオプションではありません。
ありがとうございます!
問題を再現するサンプルデータセット( 'sky_data')を提供することができますので、自分で試してみることができますか? –
こんにちは@ダビッド-z、私に戻ってくれてありがとう。わかりやすくするために、ipythonノートブックを[public git repository](https://github.com/ChiaraMingarelli/healpix_maps)にデータとともに追加しました。遊びます! –