Source code for hop.misc.plotting_tools

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from ..hexabundle_allocation.hector import constants as hector_constants

[docs]def plot_distortion_correction_before_after(DC_tile_filename, title_text=None): """ Take a tile which has had the distortion correction applied. Plot a before/after image to see the effects """ font_size = 12 # # Get the RA and DEC of the tile # with open(DC_tile_filename, 'r') as f: # lines = f.readlines() # RA, DEC = lines[1].split()[1:] # RA = float(RA) # DEC = float(DEC) df = pd.read_csv(DC_tile_filename, comment='#') # Select only galaxies in the tile mask = df.type == 1 # Rename things for brevity x_noDC = df.loc[mask, 'MagnetX_noDC']/1000 y_noDC = df.loc[mask, 'MagnetY_noDC']/1000 x_DC = df.loc[mask, 'MagnetX']/1000 y_DC = df.loc[mask, 'MagnetY']/1000 # Find the offsets for plotting dxs = np.row_stack([x_noDC, x_DC]) dys = np.row_stack([y_noDC, y_DC]) # Do the plotting fig, ax = plt.subplots(figsize=(8, 8)) ax.plot(dxs, dys, c='k', zorder=1) ax.scatter(x_noDC, y_noDC, label='Before correction', c='b', s=40, zorder=10) ax.scatter(x_DC, y_DC, label='After correction', c='r', s=40, zorder=10) Hector_FOV = plt.Circle((0, 0), radius=hector_constants.HECTOR_plate_radius, linestyle='dashed', color='k', fill=False) ax.add_patch(Hector_FOV) ax.set_xlim(-1.2 * hector_constants.HECTOR_plate_radius, 1.2 * hector_constants.HECTOR_plate_radius) ax.set_ylim(-1.2 * hector_constants.HECTOR_plate_radius, 1.2 * hector_constants.HECTOR_plate_radius) ax.scatter(0, 0, marker='+', c='k') ax.legend(fontsize=font_size, loc='lower left') #ax.set_box_aspect(1) ax.set_xlabel("X (mm)") ax.set_ylabel("Y (mm)") ax.set_title(title_text, fontsize=font_size) box_props = dict(boxstyle='round', facecolor='0.9', alpha=0.5) #ax.text(0.5, 0.95, s=f"Tile Centre is ({RA:.3f}, {DEC:.3f})", transform=ax.transAxes, bbox=box_props, fontsize=font_size, ha='center', va='bottom') return fig, ax