2015-10-13 130 views
6

我想使用python製作銀河座標的情節。比方說,我有這樣的數據:Astropy matplotlib和劇情銀河座標

數據= [(0.261,-7.123,13.03, '不明'),(-0.326,77,13.03, '星系')

其中每個元組是形式(ra,dec,flux,type)。

我被要求使用astropy + matplotlib,所以:

c = SkyCoord(ra = ra*u.degree, dec = dec*u.degree) 
galactic = c.galactic 

這裏是我的問題出現了,我用這個代碼:

from mpl_toolkits.basemap import Basemap 
import numpy as np 
import matplotlib.pyplot as plt 
# lon_0 is central longitude of projection. 
# resolution = 'c' means use crude resolution coastlines. 
m = Basemap(projection='hammer',lon_0=0,resolution='c') 
m.drawcoastlines() 
m.fillcontinents(color='coral',lake_color='aqua') 
# draw parallels and meridians. 
m.drawparallels(np.arange(-90.,120.,30.)) 
m.drawmeridians(np.arange(0.,420.,60.)) 
m.drawmapboundary(fill_color='aqua') 
plt.title("Hammer Projection") 
plt.show() 

但我不能繪製數據在銀河座標,我不知道爲什麼。此外,我還需要根據不同的顏色,以及不同的尺寸(取決於助焊劑的價值),每種顏色都有不同的顏色。我需要實現這樣的事情(我有點新的Python,我從來沒有使用astropy,我還沒有找到很好的例子):

enter image description here

希望有人能夠幫助。

+0

你能否澄清一下:「我不能在銀河座標上繪製數據,我不知道爲什麼?」你有什麼嘗試?錯誤信息是什麼,還是沒有顯示出來? – keflavich

回答

6

看看http://www.astropy.org/astropy-tutorials/plot-catalog.html底部的例子。我碰到的時候繪製銀河座標的一個共同問題是,你要繪製從-180到+180,但默認是給從0到360的座標,您可以用wrap_at改變這一狀況,如:

plot(galactic.l.wrap_at(180*u.deg), galactic.b.wrap_at(180*u.deg))