# All sky plots and graticules¶

## All Sky plots¶

An all sky plot is a plot where the range in longitude is [0,360> and the range in latitude is [-90,90>. There are many examples in Calabretta’s article Representations of celestial coordinates in FITS We tried to reproduce these figures both to prove that the modules in the Kapteyn Package have the functionality to do it and to facilitate users who want to set up an all-sky plot with module maputils. For this purpose we created for each figure the minimal required FITS headers. Header and other code is listed below the examples. In the HTML documentation, click on the hires link to get a plot which shows more details. With the information in this document, it should be easy to compose a Python program that creates just a single plot which then can be enhanced to fit your needs.

The first plot is a stand alone version. The others are generated with different Python scripts and the service module service.py (see also the source code at the end of this document).

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 from kapteyn import maputils from numpy import arange from matplotlib import pyplot as plt dec0 = 89.9999999999 # Avoid plotting on the wrong side header = {'NAXIS' : 2, 'NAXIS1' : 100, 'NAXIS2': 80, 'CTYPE1' : 'RA---TAN', 'CRVAL1' : 0.0, 'CRPIX1' : 50, 'CUNIT1' : 'deg', 'CDELT1' : -5.0, 'CTYPE2' : 'DEC--TAN', 'CRVAL2' : dec0, 'CRPIX2' : 40, 'CUNIT2' : 'deg', 'CDELT2' : 5.0, } X = arange(0,360.0,15.0) Y = [20, 30,45, 60, 75] fig = plt.figure(figsize=(7,6)) frame = fig.add_axes((0.1,0.1,0.8,0.8)) f = maputils.FITSimage(externalheader=header) annim = f.Annotatedimage(frame) grat = annim.Graticule(wylim=(20.0,90.0), wxlim=(0,360), startx=X, starty=Y) grat.setp_gratline(color='0.75') lon_world = range(0,360,30) lat_world = [20, 30, 60, 90] grat.setp_lineswcs1(20, color='g', linestyle='--') # Plot labels inside the plot lon_constval = None lat_constval = 20 lon_kwargs = {'color':'r', 'fontsize':15} lat_kwargs = {'color':'b', 'fontsize':10} grat.Insidelabels(wcsaxis=0, world=lon_world, constval=lat_constval, fmt="Dms", **lon_kwargs) grat.Insidelabels(wcsaxis=1, world=lat_world, constval=lon_constval, fmt="Dms", **lat_kwargs) annim.plot() # Set title for Matplotlib titlepos = 1.02 title = r"Gnomonic projection (TAN) diverges at $\theta=0^\circ$. (Cal. fig.8)" t = frame.set_title(title, color='g') t.set_y(titlepos) plt.show() 

The recipe

The next session shows a gallery of all sky plots, all based on the same recipe.

• One starts with a self-made header which ensures a complete coverage of the sky by stretching the values of the CDELT‘s.
• Then an object from class maputils.Annotatedimage.Graticule is created with explicit limits for the world coordinates in both directions.
• For these plots we don’t have intersections of the graticule with an enclosing rectangle so we cannot plot standard axis labels for the coordinates. Instead we use method wcsgrat.Graticule.Insidelabels() to plot labels inside the plot. In the plots we show different examples how one can manipulate these labeling.