Source code for stellarphot.plotting.aij_plots

import matplotlib.pyplot as plt

from ..settings import PhotometryApertures

__all__ = ["seeing_plot"]


[docs] def seeing_plot( raw_radius, raw_counts, binned_radius, binned_counts, HWHM, plot_title="", file_name="", photometry_settings=None, figsize=(20, 10), ): """ Show a seeing plot for data from an image with radius on the x axis and counts (ADU) on the y axis. Parameters ---------- raw_radius : array the distance of each pixel from the object of interest raw_counts : array the counts of each pixel binned_radius : array pixels grouped by distance from object of interest binned_counts : array average counts of each group of pixels HWHM : number half width half max, 1/2 * FWHM plot_title : optional, string title of plot file_name : optional, string if entered, file will save as png with this name photometry_settings : optional, `stellarphot.settings.PhotometryApertures` The aperture settings used to create the plot. If not provided, the aperture radius will be set to 4 * HWHM, the inner annulus will be set to radius + 10, and the outer annulus will be set to radius + 25, and the FWHM will be set to 2 * HWHM. figsize : tuple of int, optional Size of figure. Returns ------- `matplotlib.pyplot.figure` The figure object containing the seeing plot. """ if photometry_settings is None: radius = 4 * HWHM photometry_settings = PhotometryApertures( radius=radius, inner_annulus=radius + 10, outer_annulus=radius + 25, fwhm_estimate=2 * HWHM, variable_aperture=False, ) radius = photometry_settings.radius_pixels(2 * HWHM) inner_annulus = photometry_settings.inner_annulus outer_annulus = photometry_settings.outer_annulus fig = plt.figure(figsize=figsize) plt.grid(True) # plot the raw radius and raw counts plt.plot( raw_radius, raw_counts, linestyle="none", marker="s", markerfacecolor="none", color="blue", ) # plot the binned radius and binned counts plt.plot(binned_radius, binned_counts, color="magenta", linewidth="1.0") # draw vertical line at HWHM and label it plt.vlines(HWHM, -0.2, 1.2, linestyle=(0, (5, 10)), color="#00cc00") plt.annotate( f"HWHM {HWHM:2.1f}", (HWHM, -0.25), color="#00cc00", horizontalalignment="center", ) # label axis plt.xlabel("Radius (pixels)") plt.ylabel("ADU") # draw vertical line at the radius and label it plt.vlines(radius, -0.2, binned_counts[0], color="red") plt.annotate( f"Radius {radius:2.1f}", (radius, -0.25), color="red", horizontalalignment="center", ) plt.hlines(binned_counts[0], binned_counts[0], radius, color="red") # label the source plt.annotate( "SOURCE", (radius, binned_counts[0] + 0.02), color="red", horizontalalignment="center", ) # draw vertical lines at the background and label it plt.vlines(inner_annulus, -0.2, binned_counts[0], color="red") plt.vlines(outer_annulus, -0.2, binned_counts[0], color="red") plt.hlines(binned_counts[0], inner_annulus, outer_annulus, color="red") plt.annotate("BACKGROUND", (inner_annulus, binned_counts[0] + 0.02), color="red") plt.annotate( f"Back> {inner_annulus:2.1f}", (inner_annulus, -0.25), color="red", horizontalalignment="center", ) plt.annotate( f"<Back {outer_annulus:2.1f}", (outer_annulus, -0.25), color="red", horizontalalignment="center", ) # title the plot title_string = [f"{plot_title}", f"FWHM:{HWHM*2:.1f} pixels"] plt.title("\n".join(title_string)) # save plot as png if file_name: safe_name = file_name.replace(" ", "-") plt.savefig(f"{safe_name + '-seeing-profile'}.png") return fig