Python Crash Course Aplpy 3rd year Bachelors V1.0 dd 06-09-2013 Hour 3 APLpy APLpy (the Astronomical Plotting Library in Python) is a Python module aimed at producing publication-quality plots of astronomical imaging data in FITS format. The module uses Matplotlib and is capable of creating output files in several graphical formats, including EPS, PDF, PS, PNG, and SVG. See http://aplpy.github.io for documentation Main features • • • • • • • • • • • • • • • Make plots interactively or using scripts Show grayscale, colorscale, and 3-color RGB images of FITS files Generate co-aligned FITS cubes to make 3-color RGB images Make plots from FITS files with arbitrary WCS (e.g. position-velocity) Slice multi-dimensional FITS cubes Overlay any number of contour sets Overlay markers with fully customizable symbols Plot customizable shapes like circles, ellipses, and rectangles Overlay ds9 region files Overlay coordinate grids Show colorbars, scalebars, and beams Customize the appearance of labels and ticks Hide, show, and remove different contour and marker layers Pan, zoom, and save any view as a full publication-quality plot Save plots as EPS, PDF, PS, PNG, and SVG APLpy • Intro >>> import aplpy >>> fig = aplpy.FITSFigure('myimage.fits') >>> >>> >>> >>> fig.show_grayscale() fig.hide_grayscale() fig.show_colorscale() fig.hide_colorscale() # Scaling and panning >>> fig.recenter(33.23, 55.33, width=0.3, height=0.2) # Overlaying >>> fig.show_contour('co_data.fits') # save for publication >>> fig.save('myplot.eps') # degrees APLpy • Labels and shapes en DS9 Regions >>> fig.add_label(34.455, 54.112, 'My favorite star') >>> fig.add_label(0.1, 0.9, '(a)', relative=True) >>> >>> >>> >>> >>> fig.show_markers(x_world, y_world) # 1D arrays in degrees fig.show_circles(x_world, y_world, radius) fig.show_ellipses(x_world, y_world, width, height) fig.show_rectangles(x_world, y_world, width, height) fig.show_arrows(x_world, y_world, dx, dy) >>> fig.show_lines(line_list) >>> fig.show_polygons(polygon_list) >>> fig.show_regions('myregions.reg') # 2xN ndarray’s of vertices in degrees APLpy • Layers >>> fig.list_layers() >>> fig.hide_layer('regions') >>> fig.show_layer('regions') >>> layer = fig.get_layer('circles') >>> fig.remove_layer('rectangles') • Coordinates >>> x_pix, y_pix = fig.world2pixel(45.3332, 22.1932) >>> x_world, y_world = fig.pixel2world(np.array([1., 2., 3]), np.array([1., 3., 5.])) APLpy Annotation • Colorbar, Coordinate Grid, Scalebar, Beam >>> fig.add_colorbar() >>> fig.colorbar.set_width(0.1) >>> fig.add_grid() >>> fig.grid.set_xspacing(0.2) # degrees >>> fig.grid.set_color('white') >>> fig.add_scalebar() >>> fig.scalebar.set_length(0.02) # degrees >>> fig.scalebar.set_label('5 pc') >>> >>> >>> >>> fig.add_beam() fig.beam.set_major(0.03) # degrees fig.beam.set_minor(0.02) # degrees fig.beam.set_angle(45.) # degrees APLpy Annotation • Axis labels, Tick, Ticks >>> >>> >>> >>> >>> >>> fig.axis_labels.show() fig.axis_labels.show_x() fig.axis_labels.set_xtext('Right Ascension (J2000)') fig.axis_labels.set_xpad(...) fig.axis_labels.set_ypad(...) # set displacement fig.axis_labels.set_xposition('bottom') >>> fig.tick_labels.show() >>> fig.tick_labels.set_xformat('hh:mm:ss.ss') >>> fig.tick_labels.set_xposition('top') >>> >>> >>> >>> fig.ticks.show() fig.ticks.set_xspacing(0.04) # degrees fig.ticks.set_color('black') fig.ticks.set_linewidth(2) # points APLpy – Practical example • M33 plot (get data through skycat) >>>import aplpy gc = aplpy.FITSFigure('/disks/strw2/deul/m33.fits') gc.show_grayscale() gc.show_colorscale() gc.show_colorscale(cmap='gist_heat') gc.tick_labels.set_font(size='small') gc.add_grid() gc.remove_grid() APLpy – Practical example • Overplot GSC (get data from http://vizier.u-strasbg.fr/) from astropy.io.votable import parse import astropy.io.votable as vot gsc_table = vot.parse("/home/deul/Documents/m33_gsc.vot") table = gsc_table.get_first_table() r=table.array['_RAJ2000'] d=table.array['_DEJ2000'] s = ones(len(r))*0.003 gc.show_circles(r,d,s) gc.list_layers() gc.hide_layer('circle_set_1') gc.show_layer('circle_set_1') l = gc.get_layer('circle_set_1') l.set_edgecolor('green') APLpy – Practical example • Overplot 2MASS (get data from http://vizier.u-strasbg.fr/) from astropy.io.votable import parse import astropy.io.votable as vot gsc_table = vot.parse("/home/deul/Documents/m33_2mass.vot") table = gsc_table.get_first_table() r=table.array['_RAJ2000'] d=table.array['_DEJ2000'] s = ones(len(r))*0.003 gc.show_circles(r,d,s) gc.list_layers() gc.hide_layer('circle_set_2') gc.show_layer('circle_set_2') l = gc.get_layer('circle_set_2') l.set_edgecolor(‘blue') Introduction to language End