def test__figures_1d__all_are_output(gal_x1_lp_x1_mp, sub_grid_2d_7x7, mask_2d_7x7, include_1d_all, plot_path, plot_patch): galaxy_plotter = aplt.GalaxyPlotter( galaxy=gal_x1_lp_x1_mp, grid=sub_grid_2d_7x7, include_1d=include_1d_all, mat_plot_1d=aplt.MatPlot1D( output=aplt.Output(plot_path, format="png")), ) galaxy_plotter.figures_1d(image=True, convergence=True, potential=True) assert path.join(plot_path, "image_1d.png") in plot_patch.paths assert path.join(plot_path, "convergence_1d.png") in plot_patch.paths assert path.join(plot_path, "potential_1d.png") in plot_patch.paths plot_patch.paths = [] galaxy_plotter = aplt.GalaxyPDFPlotter( galaxy_pdf_list=[gal_x1_lp_x1_mp, gal_x1_lp_x1_mp, gal_x1_lp_x1_mp], grid=sub_grid_2d_7x7, include_1d=include_1d_all, mat_plot_1d=aplt.MatPlot1D( output=aplt.Output(plot_path, format="png")), ) galaxy_plotter.figures_1d(image=True, convergence=True, potential=True) assert path.join(plot_path, "image_1d.png") in plot_patch.paths assert path.join(plot_path, "convergence_1d.png") in plot_patch.paths assert path.join(plot_path, "potential_1d.png") in plot_patch.paths
def test__figures_1d__all_are_output( mp_0, sub_grid_2d_7x7, grid_2d_irregular_7x7_list, include_1d_all, plot_path, plot_patch, ): mat_plot_1d = aplt.MatPlot1D( half_light_radius_axvline=aplt.HalfLightRadiusAXVLine(color="r"), einstein_radius_axvline=aplt.EinsteinRadiusAXVLine(color="r"), output=aplt.Output(plot_path, format="png"), ) mass_profile_plotter = aplt.MassProfilePlotter( mass_profile=mp_0, grid=sub_grid_2d_7x7, include_1d=include_1d_all, mat_plot_1d=mat_plot_1d, ) mass_profile_plotter.figures_1d(convergence=True, potential=True) assert path.join(plot_path, "convergence_1d.png") in plot_patch.paths assert path.join(plot_path, "potential_1d.png") in plot_patch.paths
def test__figures_1d__all_are_output( lp_0, sub_grid_2d_7x7, grid_2d_irregular_7x7_list, include_1d_all, plot_path, plot_patch, ): mat_plot_1d = aplt.MatPlot1D( half_light_radius_axvline=aplt.HalfLightRadiusAXVLine(color="r"), einstein_radius_axvline=aplt.EinsteinRadiusAXVLine(color="r"), output=aplt.Output(plot_path, format="png"), ) light_profile_plotter = aplt.LightProfilePlotter( light_profile=lp_0, grid=sub_grid_2d_7x7, include_1d=include_1d_all, mat_plot_1d=mat_plot_1d, ) light_profile_plotter.figures_1d(image=True) assert path.join(plot_path, "image_1d.png") in plot_patch.paths
def test__figures_1d_decomposed__all_are_output(gal_x1_lp_x1_mp, sub_grid_2d_7x7, mask_2d_7x7, include_1d_all, plot_path, plot_patch): galaxy_plotter = aplt.GalaxyPlotter( galaxy=gal_x1_lp_x1_mp, grid=sub_grid_2d_7x7, include_1d=include_1d_all, mat_plot_1d=aplt.MatPlot1D( output=aplt.Output(plot_path, format="png")), ) galaxy_plotter.figures_1d_decomposed(convergence=True) # assert path.join(plot_path, "image_1d.png") in plot_patch.paths assert path.join(plot_path, "convergence_1d_decomposed.png") in plot_patch.paths
def __init__( self, fit: FitPointDataset, mat_plot_1d: aplt.MatPlot1D = aplt.MatPlot1D(), visuals_1d: aplt.Visuals1D = aplt.Visuals1D(), include_1d: aplt.Include1D = aplt.Include1D(), mat_plot_2d: aplt.MatPlot2D = aplt.MatPlot2D(), visuals_2d: aplt.Visuals2D = aplt.Visuals2D(), include_2d: aplt.Include2D = aplt.Include2D(), ): super().__init__( mat_plot_1d=mat_plot_1d, visuals_1d=visuals_1d, include_1d=include_1d, mat_plot_2d=mat_plot_2d, include_2d=include_2d, visuals_2d=visuals_2d, ) self.fit = fit
def __init__( self, point_dict: PointDict, mat_plot_1d: aplt.MatPlot1D = aplt.MatPlot1D(), visuals_1d: aplt.Visuals1D = aplt.Visuals1D(), include_1d: aplt.Include1D = aplt.Include1D(), mat_plot_2d: aplt.MatPlot2D = aplt.MatPlot2D(), visuals_2d: aplt.Visuals2D = aplt.Visuals2D(), include_2d: aplt.Include2D = aplt.Include2D(), ): super().__init__( mat_plot_1d=mat_plot_1d, visuals_1d=visuals_1d, include_1d=include_1d, mat_plot_2d=mat_plot_2d, include_2d=include_2d, visuals_2d=visuals_2d, ) self.point_dict = point_dict
def __init__( self, fit: FitInterferometer, mat_plot_1d: aplt.MatPlot1D = aplt.MatPlot1D(), visuals_1d: aplt.Visuals1D = aplt.Visuals1D(), include_1d: aplt.Include1D = aplt.Include1D(), mat_plot_2d: aplt.MatPlot2D = aplt.MatPlot2D(), visuals_2d: aplt.Visuals2D = aplt.Visuals2D(), include_2d: aplt.Include2D = aplt.Include2D(), ): """ Plots the attributes of `FitInterferometer` objects using the matplotlib method `imshow()` and many other matplotlib functions which customize the plot's appearance. The `mat_plot_1d` and `mat_plot_2d` attributes wrap matplotlib function calls to make the figure. By default, the settings passed to every matplotlib function called are those specified in the `config/visualize/mat_wrap/*.ini` files, but a user can manually input values into `MatPlot2d` to customize the figure's appearance. Overlaid on the figure are visuals, contained in the `Visuals1D` and `Visuals2D` objects. Attributes may be extracted from the `FitInterferometer` and plotted via the visuals object, if the corresponding entry is `True` in the `Include1D` or `Include2D` object or the `config/visualize/include.ini` file. Parameters ---------- fit The fit to an interferometer dataset the plotter plots. mat_plot_1d Contains objects which wrap the matplotlib function calls that make 1D plots. visuals_1d Contains 1D visuals that can be overlaid on 1D plots. include_1d Specifies which attributes of the `FitInterferometer` are extracted and plotted as visuals for 1D plots. mat_plot_2d Contains objects which wrap the matplotlib function calls that make 2D plots. visuals_2d Contains 2D visuals that can be overlaid on 2D plots. include_2d Specifies which attributes of the `FitInterferometer` are extracted and plotted as visuals for 2D plots. """ super().__init__( mat_plot_1d=mat_plot_1d, include_1d=include_1d, visuals_1d=visuals_1d, mat_plot_2d=mat_plot_2d, include_2d=include_2d, visuals_2d=visuals_2d, ) self.fit = fit self._fit_interferometer_meta_plotter = FitInterferometerPlotterMeta( fit=self.fit, get_visuals_2d_real_space=self.get_visuals_2d_real_space, mat_plot_1d=self.mat_plot_1d, include_1d=self.include_1d, visuals_1d=self.visuals_1d, mat_plot_2d=self.mat_plot_2d, include_2d=self.include_2d, visuals_2d=self.visuals_2d, ) self.subplot = self._fit_interferometer_meta_plotter.subplot self.subplot_fit_interferometer = ( self._fit_interferometer_meta_plotter.subplot_fit_interferometer) self.subplot_fit_dirty_images = ( self._fit_interferometer_meta_plotter.subplot_fit_dirty_images)
def __init__( self, tracer: Tracer, grid: aa.type.Grid2DLike, mat_plot_1d: aplt.MatPlot1D = aplt.MatPlot1D(), visuals_1d: aplt.Visuals1D = aplt.Visuals1D(), include_1d: aplt.Include1D = aplt.Include1D(), mat_plot_2d: aplt.MatPlot2D = aplt.MatPlot2D(), visuals_2d: aplt.Visuals2D = aplt.Visuals2D(), include_2d: aplt.Include2D = aplt.Include2D(), ): """ Plots the attributes of `Tracer` objects using the matplotlib methods `plot()` and `imshow()` and many other matplotlib functions which customize the plot's appearance. The `mat_plot_1d` and `mat_plot_2d` attributes wrap matplotlib function calls to make the figure. By default, the settings passed to every matplotlib function called are those specified in the `config/visualize/mat_wrap/*.ini` files, but a user can manually input values into `MatPlot2D` to customize the figure's appearance. Overlaid on the figure are visuals, contained in the `Visuals1D` and `Visuals2D` objects. Attributes may be extracted from the `MassProfile` and plotted via the visuals object, if the corresponding entry is `True` in the `Include1D` or `Include2D` object or the `config/visualize/include.ini` file. Parameters ---------- tracer The tracer the plotter plots. grid The 2D (y,x) grid of coordinates used to evaluate the tracer's light and mass quantities that are plotted. mat_plot_1d Contains objects which wrap the matplotlib function calls that make 1D plots. visuals_1d Contains 1D visuals that can be overlaid on 1D plots. include_1d Specifies which attributes of the `MassProfile` are extracted and plotted as visuals for 1D plots. mat_plot_2d Contains objects which wrap the matplotlib function calls that make 2D plots. visuals_2d Contains 2D visuals that can be overlaid on 2D plots. include_2d Specifies which attributes of the `MassProfile` are extracted and plotted as visuals for 2D plots. """ super().__init__( mat_plot_1d=mat_plot_1d, visuals_1d=visuals_1d, include_1d=include_1d, mat_plot_2d=mat_plot_2d, include_2d=include_2d, visuals_2d=visuals_2d, ) self.tracer = tracer self.grid = grid self._mass_plotter = MassPlotter( mass_obj=self.tracer, grid=self.grid, get_visuals_2d=self.get_visuals_2d, mat_plot_2d=self.mat_plot_2d, include_2d=self.include_2d, visuals_2d=self.visuals_2d, )