示例#1
0
def show_stars(dt, range, count_show_with_legend, plot_name, scatter=False):
    ax = plt.subplot(111, projection='3d')

    ax.plot((0,), (0,), (0,), 'o', color='orange', markersize=10, label='sun')

    ax.plot([0, range], [0, 0], [0, 0], label='to galaxy center')

    arc = Arc((27200, 0, 0), SUN_TO_CENTER_DISTANCE * 2, SUN_TO_CENTER_DISTANCE * 2,
              theta1=180 - np.degrees(range / SUN_TO_CENTER_DISTANCE),
              theta2=180 + np.degrees(range / SUN_TO_CENTER_DISTANCE))
    ax.add_patch(arc)
    art3d.pathpatch_2d_to_3d(arc, z=0)

    ax.plot([0, polaris["x"][0]], [0, polaris["y"][0]], [0, polaris["z"][0]], label='polaris')

    if scatter:
        ax.scatter(dt['x'], dt['y'], dt['z'], c=dt['vmag'], cmap=plt.cm.Spectral)
    else:
        counter = 0

        for r in dt:
            marker = mlines.Line2D.filled_markers[counter % mlines.Line2D.filled_markers.__len__()]

            if counter < count_show_with_legend:
                ax.plot([r["x"]], [r["y"]], [r["z"]], 'o',
                        label=r["name"] + " " + str(r["vmag"]) + " " + str(int(r["dist"])) + "ly",
                        markersize=5, marker=marker)
            else:
                ax.plot([r["x"]], [r["y"]], [r["z"]], '.', markersize=2)

            counter += 1

        try:
            ax.legend(numpoints=1, fontsize=10)  # call with fontsize fails on debian 7
        except:
            ax.legend(numpoints=1)


    ax.set_xlabel('ly')
    ax.set_ylabel('ly')
    ax.set_zlabel('ly')

    ax.auto_scale_xyz([-range, range], [-range, range], [-range, range])

    show_maximized_plot(plot_name)
def show_globular_clusters(dt, messier):
    ax = plt.subplot(111, projection='3d')

    ax.plot((0,), (0,), (0,), 'o', color='orange', markersize=7, label='sun')

    circle = Circle((SUN_TO_CENTER_DISTANCE, 0, 0), SUN_TO_CENTER_DISTANCE, fill=False, color='blue')
    ax.add_patch(circle)
    art3d.pathpatch_2d_to_3d(circle, z=0)

    circle = Circle((SUN_TO_CENTER_DISTANCE, 0, 0), MILKY_WAY_RADIUS, fill=False, color='blue')
    ax.add_patch(circle)
    art3d.pathpatch_2d_to_3d(circle, z=0)

    circle = Circle((0, 0, 0), 1000, fill=False, color='red')
    ax.add_patch(circle)
    art3d.pathpatch_2d_to_3d(circle, z=0)

    if messier:
        counter = 0

        for r in dt:
            marker = mlines.Line2D.filled_markers[counter % mlines.Line2D.filled_markers.__len__()]

            if r["messier"] > 0:
                ax.plot([r["x"]], [r["y"]], [r["z"]], 'o', label="M" + str(r["messier"]) + "   " + str(int(r["dist"])), markersize=5, marker=marker)

            counter += 1
        
        try:
            ax.legend(numpoints=1, fontsize=10)  # call with fontsize fails on debian 7
        except:
            ax.legend(numpoints=1)
                
    else:
        ax.scatter(dt['x'], dt['y'], dt['z'])


    ax.set_xlabel('ly')
    ax.set_ylabel('ly')
    ax.set_zlabel('ly')

    ax.auto_scale_xyz([-35000, 85000], [-60000, 60000], [-60000, 60000])

    show_maximized_plot('globular clusters')
示例#3
0
def show_local_group(dt):

    dt = dt[dt['dist'] < 1.0]

    ax = plt.subplot(111, projection='3d')

    ax.plot((0,), (0,), (0,), 'o', color='cyan', markersize=15, label='milky way')

    ax.set_color_cycle(['r', 'g', 'b', 'y', 'c', 'm'])

    counter = 0

    for r in dt:
        if r['name'] == 'NGC0224':
            marker_size = 20
            galaxy_name = 'Andromeda glx'
            marker = 'o'
        elif r['name'] == 'NGC0598':
            marker_size = 10
            galaxy_name = 'Triangulum glx'
            marker = 'o'
        else:
            marker_size = 5
            galaxy_name = r['name']
            marker = mlines.Line2D.filled_markers[counter % mlines.Line2D.filled_markers.__len__()]

        ax.plot([r['x']], [r['y']], [r['z']], '.', label=galaxy_name + ' (' + '{0:,.0f}'.format(r['dist_ly']) + 'ly)',
                markersize=marker_size, marker=marker)

        counter += 1

    ax.legend(numpoints=1)

    ax.set_xlabel('Mpc')
    ax.set_ylabel('Mpc')
    ax.set_zlabel('Mpc')

    ax.view_init(elev=10, azim=-25)

    show_maximized_plot('local group')
def show_globular_clusters(dt, messier):
    ax = plt.subplot(111, projection='3d')

    ax.plot((0,), (0,), (0,), 'o', color='orange', markersize=7, label='sun')

    circle = Circle((SUN_TO_CENTER_DISTANCE, 0, 0), SUN_TO_CENTER_DISTANCE, fill=False, color='blue')
    ax.add_patch(circle)
    art3d.pathpatch_2d_to_3d(circle, z=0)

    circle = Circle((SUN_TO_CENTER_DISTANCE, 0, 0), MILKY_WAY_RADIUS, fill=False, color='blue')
    ax.add_patch(circle)
    art3d.pathpatch_2d_to_3d(circle, z=0)

    circle = Circle((0, 0, 0), 1000, fill=False, color='red')
    ax.add_patch(circle)
    art3d.pathpatch_2d_to_3d(circle, z=0)

    if messier:
        counter = 0

        for r in dt:
            marker = mlines.Line2D.filled_markers[counter % mlines.Line2D.filled_markers.__len__()]

            if str(r["Name"]).startswith('M'):
                ax.plot([r["X"]], [r["Y"]], [r["Z"]], 'o', label=str(r["Name"]) + "   " + str(r["Rsun"]), markersize=5, marker=marker)

            counter += 1

        ax.legend(numpoints=1, fontsize=10)

    else:
        ax.scatter(dt['X'], dt['Y'], dt['Z'])

    ax.set_xlabel('ly')
    ax.set_ylabel('ly')
    ax.set_zlabel('ly')

    ax.auto_scale_xyz([-35000, 85000], [-60000, 60000], [-60000, 60000])

    show_maximized_plot('globular clusters')
示例#5
0
def show_open_clusters(messier,data,box_size):
    ax = plt.subplot(111, projection='3d')
    
    ax.plot([0], [0], [0], 'o', color='orange', markersize=10, label='sun')

    circle = Circle((SUN_TO_CENTER_DISTANCE, 0, 0), SUN_TO_CENTER_DISTANCE, fill=False, color='blue')
    ax.add_patch(circle)
    art3d.pathpatch_2d_to_3d(circle, z=0)
    
    circle = Circle((SUN_TO_CENTER_DISTANCE, 0, 0), MILKY_WAY_RADIUS, fill=False, color='blue')
    ax.add_patch(circle)
    art3d.pathpatch_2d_to_3d(circle, z=0)

    if messier:
        counter = 0
        
        for r in data:
        
            marker = mlines.Line2D.filled_markers[counter % mlines.Line2D.filled_markers.__len__()]
        
            ax.plot([r["x"]], [r["y"]], [r["z"]], 'o', label=r["messier"] + "   " + str(int(r["dist"])) + " ly", markersize=5, marker=marker)
            
            counter += 1

        try:
            ax.legend(numpoints=1, fontsize=10)  # call with fontsize fails on debian 7
        except:
            ax.legend(numpoints=1)
        
    else:
        ax.scatter(data["x"], data["y"], data["z"])
    
    ax.set_xlabel('ly')
    ax.set_ylabel('ly')
    ax.set_zlabel('ly')
    
    ax.auto_scale_xyz([-box_size, box_size], [-box_size, box_size], [-box_size, box_size])
    
    show_maximized_plot('open clusters')
示例#6
0
def show_galaxies(dt, view_mode):

    if view_mode == 0:
        box_size = 10.0
        dt = dt[dt['dist'] < box_size]
    elif view_mode == 1:
        box_size = 30.0
        dt = dt[dt['dist'] < box_size]
    elif view_mode == 2:
        box_size = 70.0
        dt = dt[dt['dist'] < box_size]
        dt = dt[dt['dist'] > 30.0]
    elif view_mode == 3:
        box_size = 120.0
        dt = dt[dt['dist'] < box_size]
        dt = dt[dt['dist'] > 40.0]

    ax = plt.subplot(111, projection='3d')
    ax.scatter(0, 0, 0, color='red')

    ax.scatter(dt['x'], dt['y'], dt['z'], c=dt['vel'], cmap=plt.cm.jet)

    ax.set_color_cycle(['r', 'g', 'm', 'c', 'y', 'b'])

    for r in dt:
        if view_mode == 0:
            if str(r['name']) == 'NGC3031':
                ax.plot([0, r['x']], [0, r['y']], [0, r['z']], label='M81 group')
            elif str(r['name']) == 'NGC5236':
                ax.plot([0, r['x']], [0, r['y']], [0, r['z']], label='M83 group')
            elif str(r['name']) == 'NGC5128':
                ax.plot([0, r['x']], [0, r['y']], [0, r['z']], label='Centaurus A group')
            elif str(r['name']) == 'NGC5457':
                ax.plot([0, r['x']], [0, r['y']], [0, r['z']], label='M101 group')
            elif str(r['name']) == 'UGC05882':
                ax.plot([0, r['x']], [0, r['y']], [0, r['z']], label='M96 group')
            elif str(r['name']) == 'IC0342':
                ax.plot([0, r['x']], [0, r['y']], [0, r['z']], label='IC342 group')
            elif str(r['name']) == 'NGC0224':
                ax.plot([0, r['x']], [0, r['y']], [0, r['z']], label='Andromeda galaxy')
        elif view_mode == 1:
            if str(r['name']) == 'NGC4477':
                ax.plot([0, r['x']], [0, r['y']], [0, r['z']], label='virgo cluster')
            elif str(r['name']) == 'NGC1365':
                ax.plot([0, r['x']], [0, r['y']], [0, r['z']], label='fornax cluster')
        elif view_mode == 2 or view_mode == 3:
            if str(r['name']) == 'NGC4696B':
                ax.plot([0, r['x']], [0, r['y']], [0, r['z']], label='centaurus cluster')
            elif str(r['name']) == 'NGC3309':
                ax.plot([0, r['x']], [0, r['y']], [0, r['z']], label='hydra cluster')
            elif str(r['name']) == 'NGC4874':
                ax.plot([0, r['x']], [0, r['y']], [0, r['z']], label='coma cluster')

    ax.legend()

    if view_mode == 0:
        ax.view_init(elev=10, azim=40)
    elif view_mode == 1:
        ax.view_init(elev=5, azim=-150)
    elif view_mode == 2 or view_mode == 3:
        ax.view_init(elev=0, azim=-70)

    ax.set_xlabel('Mpc')
    ax.set_ylabel('Mpc')
    ax.set_zlabel('Mpc')

    ax.auto_scale_xyz([-box_size, box_size], [-box_size, box_size], [-box_size, box_size])

    show_maximized_plot('galaxies ' + str(int(box_size)) + ' Mpc')
示例#7
0
    ax.auto_scale_xyz([-range, range], [-range, range], [-range, range])

    show_maximized_plot(plot_name)


#================================================================================================


dt_stars = data[0:1000]
show_stars(dt_stars, 1000, 0, "1000 brightest stars", True)


dt_stars = data[0:30]
show_stars(dt_stars, 1000, 30, "30 brightest stars")


dt_ursa = data[data["con"] == "UMa"]
show_stars(dt_ursa, 200, 6, "ursa major")


dt_orion = data[data["con"] == "Ori"]
show_stars(dt_orion, 600, 7, "orion")


dt_filtered = data[data['dist'] < 6000]
plt.hist(dt_filtered['dist'], bins=100)
plt.xlabel('distance light years')
plt.ylabel('number of stars')
show_maximized_plot("star histogram")

示例#8
0
ax.plot([0, 5000], [0, 0], [0, 0], label='to galaxy center')

arc = Arc((SUN_TO_CENTER_DISTANCE, 0, 0), 2 * SUN_TO_CENTER_DISTANCE, 2 * SUN_TO_CENTER_DISTANCE, theta1=170,
          theta2=190)
ax.add_patch(arc)
art3d.pathpatch_2d_to_3d(arc, z=0)

for r in dt:

    if r['type'] == 'Pl':
        marker = 'o'
        planetary_suffix = ' (pl)'
    else:
        marker = '^'
        planetary_suffix = ''

    ax.plot([r["x"]], [r["y"]], [r["z"]], 'o', label=r["messier"] + "   " + str(int(r["dist"])) + planetary_suffix,
            markersize=6,
            marker=marker)

ax.legend(numpoints=1)

ax.set_xlabel('ly')
ax.set_ylabel('ly')
ax.set_zlabel('ly')

ax.auto_scale_xyz([-7000, 7000], [-7000, 7000], [-7000, 7000])

show_maximized_plot('nebulas')