Repository: SarthakJariwala/seaborn-image

Issue:
imghist docstring is off
The docstring for `imghist` lists a different set of arguments than what the function accepts:

```python
def imghist(
    data,
    cmap=None,
    bins=None,
    vmin=None,
    vmax=None,
    alpha=None,
    origin=None,
    interpolation=None,
    norm=None,
    robust=False,
    perc=(2, 98),
    dx=None,
    units=None,
    dimension=None,
    describe=False,
    map_func=None,
    cbar=True,
    orientation="v",
    cbar_log=False,
    cbar_label=None,
    cbar_ticks=None,
    showticks=False,
    despine=None,
    height=5,
    aspect=1.75,
    **kwargs,
):
    """Plot data as a 2-D image with histogram showing the distribution of
    the data. Options to add scalebar, colorbar, title.
    Parameters
    ----------
    data : array-like
        Image data. Supported array shapes are all `matplotlib.pyplot.imshow` array shapes
    bins : int, optional
        Histogram bins, by default None. If None, `auto` is used.
    ax : `matplotlib.axes.Axes`, optional
        Matplotlib axes to plot image on. If None, figure and axes are auto-generated, by default None
    cmap : str or `matplotlib.colors.Colormap`, optional
        Colormap for image. Can be a seaborn-image colormap or default matplotlib colormaps or
        any other colormap converted to a matplotlib colormap, by default None
    gray : bool, optional
        If True and data is RGB image, it will be converted to grayscale.
        If True and cmap is None, cmap will be set to "gray", by default None
    vmin : float, optional
        Minimum data value that colormap covers, by default None
    vmax : float, optional
        Maximum data value that colormap covers, by default None
    alpha : float or array-like, optional
        `matplotlib.pyplot.imshow` alpha blending value from 0 (transparent) to 1 (opaque),
        by default None
    origin : str, optional
        Image origin, by default None
    interpolation : str, optional
        `matplotlib.pyplot.imshow` interpolation method used, by default None
    norm : `matplotlib.colors.Normalize`, optional
        `matplotlib` Normalize instance used to scale scalar data before
        mapping to colors using cmap
    robust : bool, optional
        If True and vmin or vmax are None, colormap range is calculated
        based on the percentiles defined in `perc` parameter, by default False
    perc : tuple or list, optional
        If `robust` is True, colormap range is calculated based
        on the percentiles specified instead of the extremes, by default (2, 98) -
        2nd and 98th percentiles for min and max values
    dx : float, optional
        Size per pixel of the image data. Specifying `dx` and `units` adds a scalebar
        to the image, by default None
    units : str, optional
        Units of `dx`, by default None
    dimension : str, optional
        dimension of `dx` and `units`, by default None
        Options include (similar to `matplotlib_scalebar`):
            - "si" : scale bar showing km, m, cm, etc.
            - "imperial" : scale bar showing in, ft, yd, mi, etc.
            - "si-reciprocal" : scale bar showing 1/m, 1/cm, etc.
            - "angle" : scale bar showing °, ʹ (minute of arc) or ʹʹ (second of arc)
            - "pixel" : scale bar showing px, kpx, Mpx, etc.
    describe : bool, optional
        Brief statistical description of the data, by default False
    map_func : callable, optional
        Transform input image data using this function. All function arguments must be passed as kwargs.
    cbar : bool, optional
        Specify if a colorbar is to be added to the image, by default True.
        If `data` is RGB image, cbar is False
    orientation : str, optional
        Specify the orientaion of colorbar, by default "v".
        Options include :
            - 'h' or 'horizontal' for a horizontal colorbar to the bottom of the image.
            - 'v' or 'vertical' for a vertical colorbar to the right of the image.
    cbar_log : bool, optional
        Log scale colormap and colorbar
    cbar_label : str, optional
        Colorbar label, by default None
    cbar_ticks : list, optional
        List of colorbar ticks, by default None
    showticks : bool, optional
        Show image x-y axis ticks, by default False
    despine : bool, optional
        Remove axes spines from image axes as well as colorbar axes, by default None
    height : int or float, optional
        Size of the individual images, by default 5.
    aspect : int or float, optional
        Aspect ratio of individual images, by default 1.75.
```

I can't propose a fix now, but creating this ticket so that at least it's tracked.


Discussion:

Resolving patch:
diff --git a/src/seaborn_image/_context.py b/src/seaborn_image/_context.py
--- a/src/seaborn_image/_context.py
+++ b/src/seaborn_image/_context.py
@@ -125,7 +125,11 @@ def set_image(cmap="deep", origin="lower", interpolation="nearest", despine=Fals
 
     if cmap in _CMAP_QUAL.keys():  # doesn't work currently
         cmap_mpl = _CMAP_QUAL.get(cmap).mpl_colormap
-        register_cmap(name=cmap, cmap=cmap_mpl)
+        try:
+            register_cmap(name=cmap, cmap=cmap_mpl)
+        # above line will raise ValueError in matplotlib>3.6 if cmap already registered
+        except ValueError:  # pragma: no cover
+            pass
 
     # change the axes spines
     # "not" is required because of the despine parameter name
diff --git a/src/seaborn_image/_general.py b/src/seaborn_image/_general.py
--- a/src/seaborn_image/_general.py
+++ b/src/seaborn_image/_general.py
@@ -402,8 +402,6 @@ def imghist(
         Image data. Supported array shapes are all `matplotlib.pyplot.imshow` array shapes
     bins : int, optional
         Histogram bins, by default None. If None, `auto` is used.
-    ax : `matplotlib.axes.Axes`, optional
-        Matplotlib axes to plot image on. If None, figure and axes are auto-generated, by default None
     cmap : str or `matplotlib.colors.Colormap`, optional
         Colormap for image. Can be a seaborn-image colormap or default matplotlib colormaps or
         any other colormap converted to a matplotlib colormap, by default None


Test patch: