2015-10-13 96 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))