def __init__(
        self,
        units: wrap_base.Units = wrap_base.Units(),
        figure: wrap_base.Figure = wrap_base.Figure(),
        axis: wrap_base.Axis = wrap_base.Axis(),
        cmap: wrap_base.Cmap = wrap_base.Cmap(),
        colorbar: wrap_base.Colorbar = wrap_base.Colorbar(),
        colorbar_tickparams: wrap_base.ColorbarTickParams = wrap_base.
        ColorbarTickParams(),
        tickparams: wrap_base.TickParams = wrap_base.TickParams(),
        yticks: wrap_base.YTicks = wrap_base.YTicks(),
        xticks: wrap_base.XTicks = wrap_base.XTicks(),
        title: wrap_base.Title = wrap_base.Title(),
        ylabel: wrap_base.YLabel = wrap_base.YLabel(),
        xlabel: wrap_base.XLabel = wrap_base.XLabel(),
        legend: wrap_base.Legend = wrap_base.Legend(),
        output: wrap_base.Output = wrap_base.Output(),
        array_overlay: wrap_2d.ArrayOverlay = wrap_2d.ArrayOverlay(),
        grid_scatter: wrap_2d.GridScatter = wrap_2d.GridScatter(),
        grid_plot: wrap_2d.GridPlot = wrap_2d.GridPlot(),
        vector_field_quiver: wrap_2d.VectorFieldQuiver = wrap_2d.
        VectorFieldQuiver(),
        patch_overlay: wrap_2d.PatchOverlay = wrap_2d.PatchOverlay(),
        voronoi_drawer: wrap_2d.VoronoiDrawer = wrap_2d.VoronoiDrawer(),
        origin_scatter: wrap_2d.OriginScatter = wrap_2d.OriginScatter(),
        mask_scatter: wrap_2d.MaskScatter = wrap_2d.MaskScatter(),
        border_scatter: wrap_2d.BorderScatter = wrap_2d.BorderScatter(),
        positions_scatter: wrap_2d.PositionsScatter = wrap_2d.PositionsScatter(
        ),
        index_scatter: wrap_2d.IndexScatter = wrap_2d.IndexScatter(),
        pixelization_grid_scatter: wrap_2d.PixelizationGridScatter = wrap_2d.
        PixelizationGridScatter(),
        light_profile_centres_scatter: lensing_wrap.
        LightProfileCentresScatter = lensing_wrap.LightProfileCentresScatter(),
        mass_profile_centres_scatter: lensing_wrap.
        MassProfileCentresScatter = lensing_wrap.MassProfileCentresScatter(),
        multiple_images_scatter: lensing_wrap.
        MultipleImagesScatter = lensing_wrap.MultipleImagesScatter(),
        critical_curves_plot: lensing_wrap.CriticalCurvesPlot = lensing_wrap.
        CriticalCurvesPlot(),
        caustics_plot: lensing_wrap.CausticsPlot = lensing_wrap.CausticsPlot(),
    ):
        """
        Visualizes data structures (e.g an `Array2D`, `Grid2D`, `VectorField`, etc.) using Matplotlib.
        
        The `Plotter` is passed objects from the `mat_wrap` package which wrap matplotlib plot functions and 
        customize the appearance of the plots of the data structure. If the values of these matplotlib wrapper 
        objects are not manually specified, they assume the default values provided in 
        the `config.visualize.mat_*` `.ini` config files.
        
        The following data structures can be plotted using the following matplotlib functions:
        
        - `Array2D`:, using `plt.imshow`.
        - `Grid2D`: using `plt.scatter`.
        - `Line`: using `plt.plot`, `plt.semilogy`, `plt.loglog` or `plt.scatter`.
        - `VectorField`: using `plt.quiver`.
        - `RectangularMapper`: using `plt.imshow`.
        - `VoronoiMapper`: using `plt.fill`.
        
        Parameters
        ----------
        units : wrap_base.Units
          The units of the figure used to plot the data structure which sets the y and x ticks and labels.
        figure : wrap_base.Figure
          Opens the matplotlib figure before plotting via `plt.figure` and closes it once plotting is complete
          via `plt.close`.
        axis : mat_wrap.Axis
            Sets the extent of the figure axis via `plt.axis` and allows for a manual axis range.
        cmap : wrap_base.Cmap
          Customizes the colormap of the plot and its normalization via matplotlib `colors` objects such 
          as `colors.Normalize` and `colors.LogNorm`.
        colorbar : mat_wrap.Colorbar
            Plots the colorbar of the plot via `plt.colorbar` and customizes its tick labels and values using method
            like `cb.set_yticklabels`.
        colorbar_tickparams : mat_wrap.ColorbarTickParams
            Customizes the yticks of the colorbar plotted via `plt.colorbar`.
        tickparams : wrap_base.TickParams
          Customizes the appearances of the y and x ticks on the plot, (e.g. the fontsize), using `plt.tick_params`.
        yticks : wrap_base.YTicks
          Sets the yticks of the plot, including scaling them to new units depending on the `Units` object, via
          `plt.yticks`.
        xticks : wrap_base.XTicks
          Sets the xticks of the plot, including scaling them to new units depending on the `Units` object, via
          `plt.xticks`.
        title : wrap_base.Title
          Sets the figure title and customizes its appearance using `plt.title`.        
        ylabel : wrap_base.YLabel
          Sets the figure ylabel and customizes its appearance using `plt.ylabel`.
        xlabel : wrap_base.XLabel
          Sets the figure xlabel and customizes its appearance using `plt.xlabel`.
        legend : wrap_base.Legend
          Sets whether the plot inclues a legend and customizes its appearance and labels using `plt.legend`.
        output : wrap_base.Output
          Sets if the figure is displayed on the user's screen or output to `.png` using `plt.show` and `plt.savefig`
        array_overlay: wrap_2d.ArrayOverlay
          Overlays an input `Array2D` over the figure using `plt.imshow`.
        grid_scatter : wrap_2d.GridScatter
          Scatters a `Grid2D` of (y,x) coordinates over the figure using `plt.scatter`.
        grid_plot: wrap_2d.LinePlot
          Plots lines of data (e.g. a y versus x plot via `plt.plot`, vertical lines via `plt.avxline`, etc.)
        vector_field_quiver: wrap_2d.VectorFieldQuiver
          Plots a `VectorField` object using the matplotlib function `plt.quiver`.
        patch_overlay: wrap_2d.PatchOverlay
          Overlays matplotlib `patches.Patch` objects over the figure, such as an `Ellipse`.
        voronoi_drawer: wrap_2d.VoronoiDrawer
          Draws a colored Voronoi mesh of pixels using `plt.fill`.
        origin_scatter : wrap_2d.OriginScatter
          Scatters the (y,x) origin of the data structure on the figure.
        mask_scatter : wrap_2d.MaskScatter
          Scatters an input `Mask2d` over the plotted data structure's figure.
        border_scatter : wrap_2d.BorderScatter
          Scatters the border of an input `Mask2d` over the plotted data structure's figure.
        positions_scatter : wrap_2d.PositionsScatter
          Scatters specific (y,x) coordinates input as a `Grid2DIrregular` object over the figure.
        index_scatter : wrap_2d.IndexScatter
          Scatters specific coordinates of an input `Grid2D` based on input values of the `Grid2D`'s 1D or 2D indexes.
        pixelization_grid_scatter : wrap_2d.PixelizationGridScatter
          Scatters the `PixelizationGrid` of a `Pixelization` object.
        light_profile_centres_scatter : lensing_wrap_2d.LightProfileCentresScatter
          Scatters the (y,x) centres of all `LightProfile`'s in the plotted object (e.g. a `Tracer`).
        mass_profile_centres_scatter : lensing_wrap_2d.MassProfileCentresScatter
          Scatters the (y,x) centres of all `MassProfile`'s in the plotted object (e.g. a `Tracer`).
        light_profile_centres_scatter : lensing_wrap_2d.MultipleImagesScatter
          Scatters the (y,x) coordinates of the multiple image locations of the lens mass model.
        critical_curves_plot : lensing_wrap_2d.CriticalCurvesPlot
            Plots the critical curves of the lens mass model as colored lines.
        caustics_plot : lensing_wrap_2d.CauticsPlot
            Plots the caustics of the lens mass model as colored lines.
        """

        self.light_profile_centres_scatter = light_profile_centres_scatter
        self.mass_profile_centres_scatter = mass_profile_centres_scatter
        self.multiple_images_scatter = multiple_images_scatter
        self.critical_curves_plot = critical_curves_plot
        self.caustics_plot = caustics_plot

        super(MatPlot2D, self).__init__(
            units=units,
            figure=figure,
            axis=axis,
            cmap=cmap,
            colorbar=colorbar,
            colorbar_tickparams=colorbar_tickparams,
            legend=legend,
            title=title,
            tickparams=tickparams,
            yticks=yticks,
            xticks=xticks,
            ylabel=ylabel,
            xlabel=xlabel,
            output=output,
            origin_scatter=origin_scatter,
            mask_scatter=mask_scatter,
            border_scatter=border_scatter,
            grid_scatter=grid_scatter,
            positions_scatter=positions_scatter,
            index_scatter=index_scatter,
            pixelization_grid_scatter=pixelization_grid_scatter,
            vector_field_quiver=vector_field_quiver,
            patch_overlay=patch_overlay,
            array_overlay=array_overlay,
            grid_plot=grid_plot,
            voronoi_drawer=voronoi_drawer,
        )
    def __init__(
        self,
        units: wrap_base.Units = wrap_base.Units(),
        figure: wrap_base.Figure = wrap_base.Figure(),
        axis: wrap_base.Axis = wrap_base.Axis(),
        cmap: wrap_base.Cmap = wrap_base.Cmap(),
        colorbar: wrap_base.Colorbar = wrap_base.Colorbar(),
        colorbar_tickparams: wrap_base.ColorbarTickParams = wrap_base.
        ColorbarTickParams(),
        tickparams: wrap_base.TickParams = wrap_base.TickParams(),
        yticks: wrap_base.YTicks = wrap_base.YTicks(),
        xticks: wrap_base.XTicks = wrap_base.XTicks(),
        title: wrap_base.Title = wrap_base.Title(),
        ylabel: wrap_base.YLabel = wrap_base.YLabel(),
        xlabel: wrap_base.XLabel = wrap_base.XLabel(),
        legend: wrap_base.Legend = wrap_base.Legend(),
        output: wrap_base.Output = wrap_base.Output(),
        yx_plot: wrap_1d.YXPlot = wrap_1d.YXPlot(),
        half_light_radius_axvline: lensing_wrap.
        HalfLightRadiusAXVLine = lensing_wrap.HalfLightRadiusAXVLine(),
        einstein_radius_axvline: lensing_wrap.
        EinsteinRadiusAXVLine = lensing_wrap.EinsteinRadiusAXVLine(),
    ):
        """
        Visualizes 1D data structures as a y versus x plot using Matplotlib.

        The `Plotter` is passed objects from the `wrap_base` package which wrap matplotlib plot functions and customize
        the appearance of the plots of the data structure. If the values of these matplotlib wrapper objects are not
        manually specified, they assume the default values provided in the `config.visualize.mat_*` `.ini` config files.

        Parameters
        ----------
        units : wrap_base.Units
            The units of the figure used to plot the data structure which sets the y and x ticks and labels.
        figure : wrap_base.Figure
            Opens the matplotlib figure before plotting via `plt.figure` and closes it once plotting is complete
            via `plt.close`.
        axis : wrap_base.Axis
            Sets the extent of the figure axis via `plt.axis` and allows for a manual axis range.
        cmap : wrap_base.Cmap
            Customizes the colormap of the plot and its normalization via matplotlib `colors` objects such
            as `colors.Normalize` and `colors.LogNorm`.
        colorbar : wrap_base.Colorbar
            Plots the colorbar of the plot via `plt.colorbar` and customizes its tick labels and values using method
            like `cb.set_yticklabels`.
        colorbar_tickparams : wrap_base.ColorbarTickParams
            Customizes the yticks of the colorbar plotted via `plt.colorbar`.
        tickparams : wrap_base.TickParams
            Customizes the appearances of the y and x ticks on the plot, (e.g. the fontsize), using `plt.tick_params`.
        yticks : wrap_base.YTicks
            Sets the yticks of the plot, including scaling them to new units depending on the `Units` object, via
            `plt.yticks`.
        xticks : wrap_base.XTicks
            Sets the xticks of the plot, including scaling them to new units depending on the `Units` object, via
            `plt.xticks`.
        title : wrap_base.Title
            Sets the figure title and customizes its appearance using `plt.title`.
        ylabel : wrap_base.YLabel
            Sets the figure ylabel and customizes its appearance using `plt.ylabel`.
        xlabel : wrap_base.XLabel
            Sets the figure xlabel and customizes its appearance using `plt.xlabel`.
        legend : wrap_base.Legend
            Sets whether the plot inclues a legend and customizes its appearance and labels using `plt.legend`.
        output : wrap_base.Output
            Sets if the figure is displayed on the user's screen or output to `.png` using `plt.show` and `plt.savefig`
        yx_plot : wrap_1d.YXPlot
            Sets how the y versus x plot appears, for example if it each axis is linear or log, using `plt.plot`.
        half_light_radius_axvline : lensing_wrap.HalfLightRadiusAXVLine
            Sets how a vertical line representing the half light radius of a `LightProfile` is plotted on the figure
            using the `plt.axvline` method.
        half_light_radius_axvline : lensing_wrap.HalfLightRadiusAXVLine
            Sets how a vertical line representing the Einstein radius of a `LensingObj` (e.g. a `MassProfile`) is
            plotted on the figure using the `plt.axvline` method.
        """

        super().__init__(
            units=units,
            figure=figure,
            axis=axis,
            cmap=cmap,
            colorbar=colorbar,
            colorbar_tickparams=colorbar_tickparams,
            tickparams=tickparams,
            yticks=yticks,
            xticks=xticks,
            title=title,
            ylabel=ylabel,
            xlabel=xlabel,
            legend=legend,
            output=output,
            yx_plot=yx_plot,
        )

        self.half_light_radius_axvline = half_light_radius_axvline
        self.einstein_radius_axvline = einstein_radius_axvline
Exemplo n.º 3
0
    def __init__(
            self,
            units: wrap_base.Units = wrap_base.Units(),
            figure: wrap_base.Figure = wrap_base.Figure(),
            axis: wrap_base.Axis = wrap_base.Axis(),
            cmap: wrap_base.Cmap = wrap_base.Cmap(),
            colorbar: wrap_base.Colorbar = wrap_base.Colorbar(),
            colorbar_tickparams: wrap_base.ColorbarTickParams = wrap_base.
        ColorbarTickParams(),
            tickparams: wrap_base.TickParams = wrap_base.TickParams(),
            yticks: wrap_base.YTicks = wrap_base.YTicks(),
            xticks: wrap_base.XTicks = wrap_base.XTicks(),
            title: wrap_base.Title = wrap_base.Title(),
            ylabel: wrap_base.YLabel = wrap_base.YLabel(),
            xlabel: wrap_base.XLabel = wrap_base.XLabel(),
            legend: wrap_base.Legend = wrap_base.Legend(),
            output: wrap_base.Output = wrap_base.Output(),
    ):
        """
        Visualizes data structures (e.g an `Array2D`, `Grid2D`, `VectorField`, etc.) using Matplotlib.
        
        The `Plotter` is passed objects from the `wrap_base` package which wrap matplotlib plot functions and customize
        the appearance of the plots of the data structure. If the values of these matplotlib wrapper objects are not
        manually specified, they assume the default values provided in the `config.visualize.mat_*` `.ini` config files.
        
        The following data structures can be plotted using the following matplotlib functions:
        
        - `Array2D`:, using `plt.imshow`.
        - `Grid2D`: using `plt.scatter`.
        - `Line`: using `plt.plot`, `plt.semilogy`, `plt.loglog` or `plt.scatter`.
        - `VectorField`: using `plt.quiver`.
        - `RectangularMapper`: using `plt.imshow`.
        - `VoronoiMapper`: using `plt.fill`.
        
        Parameters
        ----------
        units : wrap_base.Units
            The units of the figure used to plot the data structure which sets the y and x ticks and labels.
        figure : wrap_base.Figure
            Opens the matplotlib figure before plotting via `plt.figure` and closes it once plotting is complete
            via `plt.close`
        axis : wrap_base.Axis
            Sets the extent of the figure axis via `plt.axis` and allows for a manual axis range.
        cmap : wrap_base.Cmap
            Customizes the colormap of the plot and its normalization via matplotlib `colors` objects such 
            as `colors.Normalize` and `colors.LogNorm`.
        colorbar : wrap_base.Colorbar
            Plots the colorbar of the plot via `plt.colorbar` and customizes its tick labels and values using method
            like `cb.set_yticklabels`.
        colorbar_tickparams : wrap_base.ColorbarTickParams
            Customizes the yticks of the colorbar plotted via `plt.colorbar`.
        tickparams : wrap_base.TickParams
            Customizes the appearances of the y and x ticks on the plot (e.g. the fontsize) using `plt.tick_params`.
        yticks : wrap_base.YTicks
            Sets the yticks of the plot, including scaling them to new units depending on the `Units` object, via
            `plt.yticks`.
        xticks : wrap_base.XTicks
            Sets the xticks of the plot, including scaling them to new units depending on the `Units` object, via
            `plt.xticks`.
        title : wrap_base.Title
            Sets the figure title and customizes its appearance using `plt.title`.        
        ylabel : wrap_base.YLabel
            Sets the figure ylabel and customizes its appearance using `plt.ylabel`.
        xlabel : wrap_base.XLabel
            Sets the figure xlabel and customizes its appearance using `plt.xlabel`.
        legend : wrap_base.Legend
            Sets whether the plot inclues a legend and customizes its appearance and labels using `plt.legend`.
        output : wrap_base.Output
            Sets if the figure is displayed on the user's screen or output to `.png` using `plt.show` and `plt.savefig`
        """

        self.units = units
        self.figure = figure
        self.axis = axis
        self.cmap = cmap
        self.colorbar = colorbar
        self.colorbar_tickparams = colorbar_tickparams
        self.tickparams = tickparams
        self.title = title
        self.yticks = yticks
        self.xticks = xticks
        self.ylabel = ylabel
        self.xlabel = xlabel
        self.legend = legend
        self.output = output

        self.number_subplots = None
        self.subplot_index = None