2015年6月16日火曜日

astropy.coordinatesを用いた座標の取り扱い、その5 ― SkyCoodクラスの使用法、実例1

ここでは、SkyCoordオブジェクトを使って、ランダムに生成された座標値を、エイトフ図(Aitoff projection)上にプロットするという作業をやってみます。 

まず最初に必要なパッケージを読み込みます。ここでは、関連するastropyのパッケージ以外に、図を作成するためのパッケージである matplotlib、ランダムな数値データを生成するための numpy を読み込みます。

>>> from astropy import units as u
>>> from astropy.coordinates import SkyCoord
>>> import numpy as np

まず、座標値をランダムに生成し、プロットするためのデータを作成します。RA(赤経)は、0°から360°の間で値を生成し、ra_random という名前で保存します。赤緯(DEC)に関しては、-90°から+90°の間で値を生成し、dec_random という名前で保存します。

>>> ra_random = np.random.rand(100)*360.0 * u.degree
>>> dec_random = (np.random.rand(100)*180.0-90.0) * u.degree

次に ra_random、dec_random から、SkyCoordオブジェクトを生成します。

>>> c = SkyCoord(ra=ra_random, dec=dec_random, frame='icrs')

ここで使用する matplotlib という作図パッケージでは、単位として $-\pi$ から $\pi$ の間のラジアンが表記($0$ から $2 \pi$ ではない)が用いられるので、表記を変換する必要があります。この変換は、astropy.coordinate.Angle のラッピング機能を用いて行います。

>>> ra_rad = c.ra.wrap_at(180 * u.deg).radian
>>> dec_rad = c.dec.radian

最後に、matplotlibを用いて、エイトフ図法(Aitoff projection)でデータ点をプロットします。ここでは、タイトルを図の上に置き、座標を表すグリッドを加えます。データ点はサイズ2の塗りつぶした丸とします。(他にも細部の設定は、matplotlib のテキストを参照のこと。)

>>> import matplotlib.pyplot as plt
>>> plt.figure(figsize=(8,4.2))
>>> plt.subplot(111, projection="aitoff")
>>> plt.title("Aitoff projection of our random data")
>>> plt.grid(True)
>>> plt.plot(ra_rad, dec_rad, 'o', markersize=2, alpha=0.3)
>>> plt.subplots_adjust(top=0.95,bottom=0.0)
>>> plt.show()


出来上がり図