"""
This type stub file was generated by pyright.
"""

from ._decorators import _deprecate_positional_args

__all__ = ["catplot", "factorplot", "stripplot", "swarmplot", "boxplot", "violinplot", "boxenplot", "pointplot", "barplot", "countplot"]
class _CategoricalPlotter:
    width = ...
    default_palette = ...
    require_numeric = ...
    def establish_variables(self, x=..., y=..., hue=..., data=..., orient=..., order=..., hue_order=..., units=...):
        """Convert input specification into a common representation."""
        ...
    
    def establish_colors(self, color, palette, saturation): # -> None:
        """Get a list of colors for the main component of the plots."""
        ...
    
    @property
    def hue_offsets(self): # -> Any | NDArray[float64]:
        """A list of center positions for plots when hue nesting is used."""
        ...
    
    @property
    def nested_width(self): # -> float:
        """A float with the width of plot elements when hue nesting is used."""
        ...
    
    def annotate_axes(self, ax): # -> None:
        """Add descriptive labels to an Axes object."""
        ...
    
    def add_legend_data(self, ax, color, label): # -> None:
        """Add a dummy patch object so we can get legend data."""
        ...
    


class _BoxPlotter(_CategoricalPlotter):
    def __init__(self, x, y, hue, data, order, hue_order, orient, color, palette, saturation, width, dodge, fliersize, linewidth) -> None:
        ...
    
    def draw_boxplot(self, ax, kws): # -> None:
        """Use matplotlib to draw a boxplot on an Axes."""
        ...
    
    def restyle_boxplot(self, artist_dict, color, props): # -> None:
        """Take a drawn matplotlib boxplot and make it look nice."""
        ...
    
    def plot(self, ax, boxplot_kws): # -> None:
        """Make the plot."""
        ...
    


class _ViolinPlotter(_CategoricalPlotter):
    def __init__(self, x, y, hue, data, order, hue_order, bw, cut, scale, scale_hue, gridsize, width, inner, split, dodge, orient, linewidth, color, palette, saturation) -> None:
        ...
    
    def estimate_densities(self, bw, cut, scale, scale_hue, gridsize): # -> None:
        """Find the support and density for all of the data."""
        ...
    
    def fit_kde(self, x, bw): # -> tuple[gaussian_kde, Unknown]:
        """Estimate a KDE for a vector of data with flexible bandwidth."""
        ...
    
    def kde_support(self, x, bw, cut, gridsize):
        """Define a grid of support for the violin."""
        ...
    
    def scale_area(self, density, max_density, scale_hue): # -> None:
        """Scale the relative area under the KDE curve.

        This essentially preserves the "standard" KDE scaling, but the
        resulting maximum density will be 1 so that the curve can be
        properly multiplied by the violin width.

        """
        ...
    
    def scale_width(self, density): # -> None:
        """Scale each density curve to the same height."""
        ...
    
    def scale_count(self, density, counts, scale_hue): # -> None:
        """Scale each density curve by the number of observations."""
        ...
    
    @property
    def dwidth(self):
        ...
    
    def draw_violins(self, ax): # -> None:
        """Draw the violins onto `ax`."""
        ...
    
    def draw_single_observation(self, ax, at_group, at_quant, density): # -> None:
        """Draw a line to mark a single observation."""
        ...
    
    def draw_box_lines(self, ax, data, support, density, center): # -> None:
        """Draw boxplot information at center of the density."""
        ...
    
    def draw_quartiles(self, ax, data, support, density, center, split=...): # -> None:
        """Draw the quartiles as lines at width of density."""
        ...
    
    def draw_points(self, ax, data, center): # -> None:
        """Draw individual observations as points at middle of the violin."""
        ...
    
    def draw_stick_lines(self, ax, data, support, density, center, split=...): # -> None:
        """Draw individual observations as sticks at width of density."""
        ...
    
    def draw_to_density(self, ax, center, val, support, density, split, **kws): # -> None:
        """Draw a line orthogonal to the value axis at width of density."""
        ...
    
    def plot(self, ax): # -> None:
        """Make the violin plot."""
        ...
    


class _CategoricalScatterPlotter(_CategoricalPlotter):
    default_palette = ...
    require_numeric = ...
    @property
    def point_colors(self): # -> list[Unknown]:
        """Return an index into the palette for each scatter point."""
        ...
    
    def add_legend_data(self, ax): # -> None:
        """Add empty scatterplot artists with labels for the legend."""
        ...
    


class _StripPlotter(_CategoricalScatterPlotter):
    """1-d scatterplot with categorical organization."""
    def __init__(self, x, y, hue, data, order, hue_order, jitter, dodge, orient, color, palette) -> None:
        """Initialize the plotter."""
        ...
    
    def draw_stripplot(self, ax, kws): # -> None:
        """Draw the points onto `ax`."""
        ...
    
    def plot(self, ax, kws): # -> None:
        """Make the plot."""
        ...
    


class _SwarmPlotter(_CategoricalScatterPlotter):
    def __init__(self, x, y, hue, data, order, hue_order, dodge, orient, color, palette) -> None:
        """Initialize the plotter."""
        ...
    
    def could_overlap(self, xy_i, swarm, d): # -> NDArray[Unknown]:
        """Return a list of all swarm points that could overlap with target.

        Assumes that swarm is a sorted list of all points below xy_i.
        """
        ...
    
    def position_candidates(self, xy_i, neighbors, d): # -> NDArray[Unknown]:
        """Return a list of (x, y) coordinates that might be valid."""
        ...
    
    def first_non_overlapping_candidate(self, candidates, neighbors, d):
        """Remove candidates from the list if they overlap with the swarm."""
        ...
    
    def beeswarm(self, orig_xy, d): # -> NDArray[Unknown]:
        """Adjust x position of points to avoid overlaps."""
        ...
    
    def add_gutters(self, points, center, width):
        """Stop points from extending beyond their territory."""
        ...
    
    def swarm_points(self, ax, points, center, width, s, **kws): # -> None:
        """Find new positions on the categorical axis for each point."""
        ...
    
    def draw_swarmplot(self, ax, kws): # -> None:
        """Plot the data."""
        ...
    
    def plot(self, ax, kws): # -> None:
        """Make the full plot."""
        ...
    


class _CategoricalStatPlotter(_CategoricalPlotter):
    require_numeric = ...
    @property
    def nested_width(self): # -> float:
        """A float with the width of plot elements when hue nesting is used."""
        ...
    
    def estimate_statistic(self, estimator, ci, n_boot, seed): # -> None:
        ...
    
    def draw_confints(self, ax, at_group, confint, colors, errwidth=..., capsize=..., **kws): # -> None:
        ...
    


class _BarPlotter(_CategoricalStatPlotter):
    """Show point estimates and confidence intervals with bars."""
    def __init__(self, x, y, hue, data, order, hue_order, estimator, ci, n_boot, units, seed, orient, color, palette, saturation, errcolor, errwidth, capsize, dodge) -> None:
        """Initialize the plotter."""
        ...
    
    def draw_bars(self, ax, kws): # -> None:
        """Draw the bars onto `ax`."""
        ...
    
    def plot(self, ax, bar_kws): # -> None:
        """Make the plot."""
        ...
    


class _PointPlotter(_CategoricalStatPlotter):
    default_palette = ...
    def __init__(self, x, y, hue, data, order, hue_order, estimator, ci, n_boot, units, seed, markers, linestyles, dodge, join, scale, orient, color, palette, errwidth=..., capsize=...) -> None:
        """Initialize the plotter."""
        ...
    
    @property
    def hue_offsets(self): # -> NDArray[float64]:
        """Offsets relative to the center position for each hue level."""
        ...
    
    def draw_points(self, ax): # -> None:
        """Draw the main data components of the plot."""
        ...
    
    def plot(self, ax): # -> None:
        """Make the plot."""
        ...
    


class _CountPlotter(_BarPlotter):
    require_numeric = ...


class _LVPlotter(_CategoricalPlotter):
    def __init__(self, x, y, hue, data, order, hue_order, orient, color, palette, saturation, width, dodge, k_depth, linewidth, scale, outlier_prop, trust_alpha, showfliers=...) -> None:
        ...
    
    def draw_letter_value_plot(self, ax, kws): # -> None:
        """Use matplotlib to draw a letter value plot on an Axes."""
        ...
    
    def plot(self, ax, boxplot_kws): # -> None:
        """Make the plot."""
        ...
    


_categorical_docs = ...
@_deprecate_positional_args
def boxplot(*, x=..., y=..., hue=..., data=..., order=..., hue_order=..., orient=..., color=..., palette=..., saturation=..., width=..., dodge=..., fliersize=..., linewidth=..., whis=..., ax=..., **kwargs): # -> Axes:
    ...

@_deprecate_positional_args
def violinplot(*, x=..., y=..., hue=..., data=..., order=..., hue_order=..., bw=..., cut=..., scale=..., scale_hue=..., gridsize=..., width=..., inner=..., split=..., dodge=..., orient=..., linewidth=..., color=..., palette=..., saturation=..., ax=..., **kwargs): # -> Axes:
    ...

@_deprecate_positional_args
def boxenplot(*, x=..., y=..., hue=..., data=..., order=..., hue_order=..., orient=..., color=..., palette=..., saturation=..., width=..., dodge=..., k_depth=..., linewidth=..., scale=..., outlier_prop=..., trust_alpha=..., showfliers=..., ax=..., **kwargs): # -> Axes:
    ...

@_deprecate_positional_args
def stripplot(*, x=..., y=..., hue=..., data=..., order=..., hue_order=..., jitter=..., dodge=..., orient=..., color=..., palette=..., size=..., edgecolor=..., linewidth=..., ax=..., **kwargs): # -> Axes:
    ...

@_deprecate_positional_args
def swarmplot(*, x=..., y=..., hue=..., data=..., order=..., hue_order=..., dodge=..., orient=..., color=..., palette=..., size=..., edgecolor=..., linewidth=..., ax=..., **kwargs): # -> Axes:
    ...

@_deprecate_positional_args
def barplot(*, x=..., y=..., hue=..., data=..., order=..., hue_order=..., estimator=..., ci=..., n_boot=..., units=..., seed=..., orient=..., color=..., palette=..., saturation=..., errcolor=..., errwidth=..., capsize=..., dodge=..., ax=..., **kwargs): # -> Axes:
    ...

@_deprecate_positional_args
def pointplot(*, x=..., y=..., hue=..., data=..., order=..., hue_order=..., estimator=..., ci=..., n_boot=..., units=..., seed=..., markers=..., linestyles=..., dodge=..., join=..., scale=..., orient=..., color=..., palette=..., errwidth=..., capsize=..., ax=..., **kwargs): # -> Axes:
    ...

@_deprecate_positional_args
def countplot(*, x=..., y=..., hue=..., data=..., order=..., hue_order=..., orient=..., color=..., palette=..., saturation=..., dodge=..., ax=..., **kwargs): # -> Axes:
    ...

def factorplot(*args, **kwargs):
    """Deprecated; please use `catplot` instead."""
    ...

@_deprecate_positional_args
def catplot(*, x=..., y=..., hue=..., data=..., row=..., col=..., col_wrap=..., estimator=..., ci=..., n_boot=..., units=..., seed=..., order=..., hue_order=..., row_order=..., col_order=..., kind=..., height=..., aspect=..., orient=..., color=..., palette=..., legend=..., legend_out=..., sharex=..., sharey=..., margin_titles=..., facet_kws=..., **kwargs):
    ...

