%pylab inline tau = 2.0 * pi import ephem from ephem.stars import stars len(stars) starlist = stars.values() for star in starlist: star.compute('2012/1/10') degree = tau / 360.0 hour = tau / 24.0 ra_list = [star.ra / hour for star in starlist] dec_list = [star.dec / degree for star in starlist] scatter(ra_list, dec_list) gca().invert_xaxis() scatter(ra_list, dec_list) axis([7.5, 3.5, -20, 20]) orion_axes = [7.5, 3.5, -20, 20] print starlist[0].name print starlist[0].mag print starlist[0]._spect [star.mag for star in starlist[:5]] mag_array = np.array([ star.mag for star in starlist ]) mag_array[:5] size_array = (5 - mag_array) ** 1.5 * 4 size_array[:5] scatter(ra_list, dec_list, size_array) axis(orion_axes) spectral_list = [star._spect for star in starlist] spectral_list[:10] from spectral_classification import build_color_chart color_chart = build_color_chart('starcolors.txt') color_list = [color_chart[spectral_class + '(V)'] for spectral_class in spectral_list] scatter(ra_list, dec_list, size_array, color_list) axis(orion_axes) def pretty_hours(h, pos=None): if h % 1.0 == 0.0: return '{:.0g}h'.format(h) else: return '{:.2g}h'.format(h) def pretty_degrees(d, pos=None): return u'{}°'.format(d) print pretty_hours(3.5) print pretty_hours(5.0) print pretty_degrees(125) print pretty_degrees(360) from matplotlib.ticker import FuncFormatter hours_formatter = FuncFormatter(pretty_hours) degrees_formatter = FuncFormatter(pretty_degrees) scatter(ra_list, dec_list, size_array, color_list) axis(orion_axes) gca().xaxis.set_major_formatter(hours_formatter) gca().yaxis.set_major_formatter(degrees_formatter) scatter(ra_list, dec_list, size_array, color_list) axis(orion_axes) gca().xaxis.set_major_formatter(hours_formatter) gca().yaxis.set_major_formatter(degrees_formatter) gca().xaxis.grid(True) gca().yaxis.grid(True)