Source code for resilientplotterclass.axes

from mpl_toolkits.axes_grid1 import make_axes_locatable

import resilientplotterclass as rpc


[docs] def append_cbar_axis(ax, append_axes_kwargs=None): """Append a colorbar axis. :param ax: Axis. :type ax: matplotlib.axes.Axes :param append_axes_kwargs: Keyword arguments for :func:`mpl_toolkits.axes_grid1.axes_divider.AxesDivider.append_axes`. :type append_axes_kwargs: dict, optional :return: Colorbar axis. :rtype: matplotlib.axes.Axes :See also: `matplotlib.figure.Figure.colorbar <https://matplotlib.org/stable/api/_as_gen/matplotlib.figure.Figure.colorbar.html>`_, `mpl_toolkits.axes_grid1.axes_divider.AxesDivider.append_axes <https://matplotlib.org/stable/api/_as_gen/mpl_toolkits.axes_grid1.axes_divider.AxesDivider.html#mpl_toolkits.axes_grid1.axes_divider.AxesDivider.append_axes>`_. """ # Create keyword arguments if not provided if append_axes_kwargs is None: append_axes_kwargs = {} # Divide axis divider = make_axes_locatable(ax) # Create colorbar axis cax = divider.append_axes(**append_axes_kwargs) # Return colorbar axis return cax
[docs] def format( ax, data=None, crs=None, xy_unit=None, xlim=None, ylim=None, xlabel_kwargs=None, ylabel_kwargs=None, title_kwargs=None, aspect_kwargs=None, grid_kwargs=None, ): """Format axis for a DataArray, UgridDataArray or GeoDataFrame. :param ax: Axis. :type ax: matplotlib.axes.Axes :param data: DataArray, UgridDataArray or GeoDataFrame to rescale. If ``None``, the coordinate reference system is used to create the axis. :type data: xr.DataArray or xugrid.UgridDataArray or gpd.GeoDataFrame, optional :param crs: Coordinate reference system of the data. If ``None``, the data is used to create the axis. :type crs: pyproj.CRS or rasterio.CRS or str, optional :param xy_unit: Unit to rescale the x and y dimensions to. If ``None``, the unit is determined automatically based on the input data. :type xy_unit: str, optional :param xlim: x limits. :type xlim: list[float], optional :param ylim: y limits. :type ylim: list[float], optional :param xlabel_kwargs: Keyword arguments for :func:`matplotlib.axis.set_xlabel`. :type xlabel_kwargs: dict, optional :param ylabel_kwargs: Keyword arguments for :func:`matplotlib.axis.set_ylabel`. :type ylabel_kwargs: dict, optional :param title_kwargs: Keyword arguments for :func:`matplotlib.axis.set_title`. :type title_kwargs: dict, optional :param aspect_kwargs: Keyword arguments for :func:`matplotlib.axis.set_aspect`. :type aspect_kwargs: dict, optional :param grid_kwargs: Keyword arguments for :func:`matplotlib.axis.grid`. :type grid_kwargs: dict, optional :return: Axis. :rtype: matplotlib.axes.Axes :See also: `matplotlib.axis.set_xlabel <https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.set_xlabel.html>`_, `matplotlib.axis.set_ylabel <https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.set_ylabel.html>`_, `matplotlib.axis.set_title <https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.set_title.html>`_, `matplotlib.axis.set_aspect <https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.set_aspect.html>`_, `matplotlib.axis.grid <https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.grid.html>`_. """ # Create keyword arguments if not provided if xlabel_kwargs is None: xlabel_kwargs = {} if ylabel_kwargs is None: ylabel_kwargs = {} if title_kwargs is None: title_kwargs = {} if aspect_kwargs is None: aspect_kwargs = {} if grid_kwargs is None: grid_kwargs = {} # Get the rescale parameters scale_factor, xlabel, ylabel = rpc.rescale.get_rescale_parameters(data=data, crs=crs, xy_unit=xy_unit) # Rescale x and y limits if xlim is not None: xlim = [x * scale_factor for x in xlim] if ylim is not None: ylim = [y * scale_factor for y in ylim] # Set default keyword arguments xlabel_kwargs.setdefault("xlabel", xlabel) ylabel_kwargs.setdefault("ylabel", ylabel) title_kwargs.setdefault("label", "") aspect_kwargs.setdefault("aspect", "equal") grid_kwargs.setdefault("visible", True) # Set limits ax.set_xlim(xlim) ax.set_ylim(ylim) # Set labels ax.set_xlabel(**xlabel_kwargs) ax.set_ylabel(**ylabel_kwargs) ax.set_title(**title_kwargs) # Set aspect ax.set_aspect(**aspect_kwargs) # Set grid ax.grid(**grid_kwargs) # Set tick label format ax.ticklabel_format(useOffset=False, style="plain") # Return axis return ax