Full Code of mwaskom/seaborn for AI

master 32088bbc3adc cached
310 files
2.6 MB
691.3k tokens
2798 symbols
1 requests
Download .txt
Showing preview only (2,759K chars total). Download the full file or copy to clipboard to get everything.
Repository: mwaskom/seaborn
Branch: master
Commit: 32088bbc3adc
Files: 310
Total size: 2.6 MB

Directory structure:
gitextract_2fyw04_k/

├── .github/
│   ├── CONTRIBUTING.md
│   ├── dependabot.yml
│   └── workflows/
│       └── ci.yaml
├── .gitignore
├── .pre-commit-config.yaml
├── CITATION.cff
├── LICENSE.md
├── Makefile
├── README.md
├── SECURITY.md
├── ci/
│   ├── cache_datasets.py
│   ├── check_gallery.py
│   ├── deps_pinned.txt
│   └── getmsfonts.sh
├── doc/
│   ├── .gitignore
│   ├── Makefile
│   ├── README.md
│   ├── _docstrings/
│   │   ├── FacetGrid.ipynb
│   │   ├── JointGrid.ipynb
│   │   ├── Makefile
│   │   ├── PairGrid.ipynb
│   │   ├── axes_style.ipynb
│   │   ├── barplot.ipynb
│   │   ├── blend_palette.ipynb
│   │   ├── boxenplot.ipynb
│   │   ├── boxplot.ipynb
│   │   ├── catplot.ipynb
│   │   ├── clustermap.ipynb
│   │   ├── color_palette.ipynb
│   │   ├── countplot.ipynb
│   │   ├── cubehelix_palette.ipynb
│   │   ├── dark_palette.ipynb
│   │   ├── displot.ipynb
│   │   ├── diverging_palette.ipynb
│   │   ├── ecdfplot.ipynb
│   │   ├── heatmap.ipynb
│   │   ├── histplot.ipynb
│   │   ├── hls_palette.ipynb
│   │   ├── husl_palette.ipynb
│   │   ├── jointplot.ipynb
│   │   ├── kdeplot.ipynb
│   │   ├── light_palette.ipynb
│   │   ├── lineplot.ipynb
│   │   ├── lmplot.ipynb
│   │   ├── move_legend.ipynb
│   │   ├── mpl_palette.ipynb
│   │   ├── objects.Agg.ipynb
│   │   ├── objects.Area.ipynb
│   │   ├── objects.Band.ipynb
│   │   ├── objects.Bar.ipynb
│   │   ├── objects.Bars.ipynb
│   │   ├── objects.Count.ipynb
│   │   ├── objects.Dash.ipynb
│   │   ├── objects.Dodge.ipynb
│   │   ├── objects.Dot.ipynb
│   │   ├── objects.Dots.ipynb
│   │   ├── objects.Est.ipynb
│   │   ├── objects.Hist.ipynb
│   │   ├── objects.Jitter.ipynb
│   │   ├── objects.KDE.ipynb
│   │   ├── objects.Line.ipynb
│   │   ├── objects.Lines.ipynb
│   │   ├── objects.Norm.ipynb
│   │   ├── objects.Path.ipynb
│   │   ├── objects.Paths.ipynb
│   │   ├── objects.Perc.ipynb
│   │   ├── objects.Plot.add.ipynb
│   │   ├── objects.Plot.config.ipynb
│   │   ├── objects.Plot.facet.ipynb
│   │   ├── objects.Plot.label.ipynb
│   │   ├── objects.Plot.layout.ipynb
│   │   ├── objects.Plot.limit.ipynb
│   │   ├── objects.Plot.on.ipynb
│   │   ├── objects.Plot.pair.ipynb
│   │   ├── objects.Plot.scale.ipynb
│   │   ├── objects.Plot.share.ipynb
│   │   ├── objects.Plot.theme.ipynb
│   │   ├── objects.Range.ipynb
│   │   ├── objects.Shift.ipynb
│   │   ├── objects.Stack.ipynb
│   │   ├── objects.Text.ipynb
│   │   ├── pairplot.ipynb
│   │   ├── plotting_context.ipynb
│   │   ├── pointplot.ipynb
│   │   ├── regplot.ipynb
│   │   ├── relplot.ipynb
│   │   ├── residplot.ipynb
│   │   ├── rugplot.ipynb
│   │   ├── scatterplot.ipynb
│   │   ├── set_context.ipynb
│   │   ├── set_style.ipynb
│   │   ├── set_theme.ipynb
│   │   ├── stripplot.ipynb
│   │   ├── swarmplot.ipynb
│   │   └── violinplot.ipynb
│   ├── _static/
│   │   ├── copybutton.js
│   │   └── css/
│   │       └── custom.css
│   ├── _templates/
│   │   ├── autosummary/
│   │   │   ├── base.rst
│   │   │   ├── class.rst
│   │   │   ├── object.rst
│   │   │   ├── plot.rst
│   │   │   └── scale.rst
│   │   ├── layout.html
│   │   └── version.html
│   ├── _tutorial/
│   │   ├── Makefile
│   │   ├── aesthetics.ipynb
│   │   ├── axis_grids.ipynb
│   │   ├── categorical.ipynb
│   │   ├── color_palettes.ipynb
│   │   ├── data_structure.ipynb
│   │   ├── distributions.ipynb
│   │   ├── error_bars.ipynb
│   │   ├── function_overview.ipynb
│   │   ├── introduction.ipynb
│   │   ├── objects_interface.ipynb
│   │   ├── properties.ipynb
│   │   ├── regression.ipynb
│   │   └── relational.ipynb
│   ├── api.rst
│   ├── citing.rst
│   ├── conf.py
│   ├── example_thumbs/
│   │   └── .gitkeep
│   ├── faq.rst
│   ├── index.rst
│   ├── installing.rst
│   ├── make.bat
│   ├── matplotlibrc
│   ├── sphinxext/
│   │   ├── gallery_generator.py
│   │   └── tutorial_builder.py
│   ├── tools/
│   │   ├── extract_examples.py
│   │   ├── generate_logos.py
│   │   ├── nb_to_doc.py
│   │   └── set_nb_kernels.py
│   ├── tutorial.yaml
│   └── whatsnew/
│       ├── index.rst
│       ├── v0.10.0.rst
│       ├── v0.10.1.rst
│       ├── v0.11.0.rst
│       ├── v0.11.1.rst
│       ├── v0.11.2.rst
│       ├── v0.12.0.rst
│       ├── v0.12.1.rst
│       ├── v0.12.2.rst
│       ├── v0.13.0.rst
│       ├── v0.13.1.rst
│       ├── v0.13.2.rst
│       ├── v0.2.0.rst
│       ├── v0.2.1.rst
│       ├── v0.3.0.rst
│       ├── v0.3.1.rst
│       ├── v0.4.0.rst
│       ├── v0.5.0.rst
│       ├── v0.5.1.rst
│       ├── v0.6.0.rst
│       ├── v0.7.0.rst
│       ├── v0.7.1.rst
│       ├── v0.8.0.rst
│       ├── v0.8.1.rst
│       ├── v0.9.0.rst
│       └── v0.9.1.rst
├── examples/
│   ├── .gitignore
│   ├── anscombes_quartet.py
│   ├── different_scatter_variables.py
│   ├── errorband_lineplots.py
│   ├── faceted_histogram.py
│   ├── faceted_lineplot.py
│   ├── grouped_barplot.py
│   ├── grouped_boxplot.py
│   ├── grouped_violinplots.py
│   ├── heat_scatter.py
│   ├── hexbin_marginals.py
│   ├── histogram_stacked.py
│   ├── horizontal_boxplot.py
│   ├── jitter_stripplot.py
│   ├── joint_histogram.py
│   ├── joint_kde.py
│   ├── kde_ridgeplot.py
│   ├── large_distributions.py
│   ├── layered_bivariate_plot.py
│   ├── logistic_regression.py
│   ├── many_facets.py
│   ├── many_pairwise_correlations.py
│   ├── marginal_ticks.py
│   ├── multiple_bivariate_kde.py
│   ├── multiple_conditional_kde.py
│   ├── multiple_ecdf.py
│   ├── multiple_regression.py
│   ├── pair_grid_with_kde.py
│   ├── paired_pointplots.py
│   ├── pairgrid_dotplot.py
│   ├── palette_choices.py
│   ├── palette_generation.py
│   ├── part_whole_bars.py
│   ├── pointplot_anova.py
│   ├── radial_facets.py
│   ├── regression_marginals.py
│   ├── residplot.py
│   ├── scatter_bubbles.py
│   ├── scatterplot_categorical.py
│   ├── scatterplot_matrix.py
│   ├── scatterplot_sizes.py
│   ├── simple_violinplots.py
│   ├── smooth_bivariate_kde.py
│   ├── spreadsheet_heatmap.py
│   ├── strip_regplot.py
│   ├── structured_heatmap.py
│   ├── three_variable_histogram.py
│   ├── timeseries_facets.py
│   ├── wide_data_lineplot.py
│   └── wide_form_violinplot.py
├── licences/
│   ├── APPDIRS_LICENSE
│   ├── HUSL_LICENSE
│   ├── NUMPYDOC_LICENSE
│   ├── PACKAGING_LICENSE
│   └── SCIPY_LICENSE
├── pyproject.toml
├── seaborn/
│   ├── __init__.py
│   ├── _base.py
│   ├── _compat.py
│   ├── _core/
│   │   ├── __init__.py
│   │   ├── data.py
│   │   ├── exceptions.py
│   │   ├── groupby.py
│   │   ├── moves.py
│   │   ├── plot.py
│   │   ├── properties.py
│   │   ├── rules.py
│   │   ├── scales.py
│   │   ├── subplots.py
│   │   └── typing.py
│   ├── _docstrings.py
│   ├── _marks/
│   │   ├── __init__.py
│   │   ├── area.py
│   │   ├── bar.py
│   │   ├── base.py
│   │   ├── dot.py
│   │   ├── line.py
│   │   └── text.py
│   ├── _statistics.py
│   ├── _stats/
│   │   ├── __init__.py
│   │   ├── aggregation.py
│   │   ├── base.py
│   │   ├── counting.py
│   │   ├── density.py
│   │   ├── order.py
│   │   └── regression.py
│   ├── _testing.py
│   ├── algorithms.py
│   ├── axisgrid.py
│   ├── categorical.py
│   ├── cm.py
│   ├── colors/
│   │   ├── __init__.py
│   │   ├── crayons.py
│   │   └── xkcd_rgb.py
│   ├── distributions.py
│   ├── external/
│   │   ├── __init__.py
│   │   ├── appdirs.py
│   │   ├── docscrape.py
│   │   ├── husl.py
│   │   ├── kde.py
│   │   └── version.py
│   ├── matrix.py
│   ├── miscplot.py
│   ├── objects.py
│   ├── palettes.py
│   ├── rcmod.py
│   ├── regression.py
│   ├── relational.py
│   ├── utils.py
│   └── widgets.py
├── setup.cfg
└── tests/
    ├── __init__.py
    ├── _core/
    │   ├── __init__.py
    │   ├── test_data.py
    │   ├── test_groupby.py
    │   ├── test_moves.py
    │   ├── test_plot.py
    │   ├── test_properties.py
    │   ├── test_rules.py
    │   ├── test_scales.py
    │   └── test_subplots.py
    ├── _marks/
    │   ├── __init__.py
    │   ├── test_area.py
    │   ├── test_bar.py
    │   ├── test_base.py
    │   ├── test_dot.py
    │   ├── test_line.py
    │   └── test_text.py
    ├── _stats/
    │   ├── __init__.py
    │   ├── test_aggregation.py
    │   ├── test_counting.py
    │   ├── test_density.py
    │   ├── test_order.py
    │   └── test_regression.py
    ├── conftest.py
    ├── test_algorithms.py
    ├── test_axisgrid.py
    ├── test_base.py
    ├── test_categorical.py
    ├── test_distributions.py
    ├── test_docstrings.py
    ├── test_matrix.py
    ├── test_miscplot.py
    ├── test_objects.py
    ├── test_palettes.py
    ├── test_rcmod.py
    ├── test_regression.py
    ├── test_relational.py
    ├── test_statistics.py
    └── test_utils.py

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/CONTRIBUTING.md
================================================
Contributing to seaborn
=======================

General support
---------------

General support questions ("how do I do X?") are most at home on [StackOverflow](https://stackoverflow.com/), which has a larger audience of people who will see your post and may be able to offer assistance. Your chance of getting a quick answer will be higher if you include runnable code, a precise statement of what you are hoping to achieve, and a clear explanation of the problems that you have encountered.

Reporting bugs
--------------

If you think you've encountered a bug in seaborn, please report it on the [Github issue tracker](https://github.com/mwaskom/seaborn/issues/new). To be useful, bug reports *must* include the following information:

- A reproducible code example that demonstrates the problem
- The output that you are seeing (an image of a plot, or the error message)
- A clear explanation of why you think something is wrong
- The specific versions of seaborn and matplotlib that you are working with

Bug reports are easiest to address if they can be demonstrated using one of the example datasets from the seaborn docs (i.e. with `seaborn.load_dataset`). Otherwise, it is preferable that your example generate synthetic data to reproduce the problem. If you can only demonstrate the issue with your actual dataset, you will need to share it, ideally as a csv (do not share data as a pickle file).

If you've encountered an error, searching the specific text of the message before opening a new issue can often help you solve the problem quickly and avoid making a duplicate report.

Because matplotlib handles the actual rendering, errors or incorrect outputs may be due to a problem in matplotlib rather than one in seaborn. It can save time if you try to reproduce the issue in an example that uses only matplotlib, so that you can report it in the right place. But it is alright to skip this step if it's not obvious how to do it.


New features
------------

If you think there is a new feature that should be added to seaborn, you can open an issue to discuss it. But please be aware that current development efforts are mostly focused on standardizing the API and internals, and there may be relatively low enthusiasm for novel features that do not fit well into short- and medium-term development plans.


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
  # Maintain dependencies for GitHub Actions
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      # Check for updates to GitHub Actions every week
      interval: "weekly"


================================================
FILE: .github/workflows/ci.yaml
================================================
name: CI

on:
  push:
    branches: [master, v0.*]
  pull_request:
    branches: master
  schedule:
    - cron:  '0 6 * * 1,4' # Each Monday and Thursday at 06:00 UTC
  workflow_dispatch:

permissions:
  contents: read

env:
  NB_KERNEL: python
  MPLBACKEND: Agg
  SEABORN_DATA: ${{ github.workspace }}/seaborn-data
  PYDEVD_DISABLE_FILE_VALIDATION: 1

jobs:
  build-docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

      - name: Setup Python 3.11
        uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0
        with:
          python-version: "3.11"

      - name: Install seaborn
        run: |
          pip install --upgrade pip
          pip install .[stats,docs]

      - name: Install pandoc
        run: |
          wget https://github.com/jgm/pandoc/releases/download/3.1.11/pandoc-3.1.11-1-amd64.deb
          sudo dpkg -i pandoc-3.1.11-1-amd64.deb

      - name: Cache datasets
        run: |
          git clone https://github.com/mwaskom/seaborn-data.git
          ls $SEABORN_DATA

      - name: Build docs
        env:
          SPHINXOPTS: -j `nproc`
        run: |
          cd doc
          make -j `nproc` notebooks
          make html


  run-tests:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        python: ["3.10", "3.11", "3.12", "3.13", "3.14"]
        install: [full]
        deps: [latest]

        include:
          - python: "3.10"
            install: full
            deps: pinned
          - python: "3.13"
            install: light
            deps: latest

    steps:
      - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

      - name: Setup Python ${{ matrix.python }}
        uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0
        with:
          python-version: ${{ matrix.python }}
          allow-prereleases: true

      - name: Install seaborn
        run: |
          pip install --upgrade pip wheel
          if [[ ${{matrix.install}} == 'full' ]]; then EXTRAS=',stats'; fi
          if [[ ${{matrix.deps }} == 'pinned' ]]; then DEPS='-r ci/deps_pinned.txt'; fi
          pip install .[dev$EXTRAS] $DEPS

      - name: Run tests
        run: make test

      - name: Upload coverage
        uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # v3.1.4
        if: ${{ success() }}

  lint:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
    steps:

      - name: Checkout
        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

      - name: Setup Python
        uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0

      - name: Install tools
        run: pip install mypy~=1.10.0 flake8

      - name: Flake8
        run: make lint

      - name: Type checking
        run: make typecheck


================================================
FILE: .gitignore
================================================
*.pyc
*.sw*
build/
.ipynb_checkpoints/
dist/
seaborn.egg-info/
.cache/
.coverage
cover/
htmlcov/
.idea/
.vscode/
.pytest_cache/
.DS_Store
notes/
notebooks/


================================================
FILE: .pre-commit-config.yaml
================================================
repos:
-   repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.3.0
    hooks:
    -   id: check-yaml
    -   id: end-of-file-fixer
    -   id: trailing-whitespace
        exclude: \.svg$
-   repo: https://github.com/pycqa/flake8
    rev: 5.0.4
    hooks:
    -   id: flake8
        exclude: seaborn/(cm\.py|external/)
        types: [file, python]
-   repo: https://github.com/pre-commit/mirrors-mypy
    rev: v0.971
    hooks:
     -  id: mypy
        args: [--follow-imports=skip]
        files: seaborn/_(core|marks|stats)/


================================================
FILE: CITATION.cff
================================================
cff-version: 1.2.0
message: "If seaborn is integral to a scientific publication, please cite the following paper:"
preferred-citation:
  type: article
  authors:
  - family-names: "Waskom"
    given-names: "Michael Lawrence"
    orcid: "https://orcid.org/0000-0002-9817-6869"
  doi: "10.21105/joss.03021"
  journal: "Journal of Open Source Software"
  month: April
  title: "seaborn: statistical data visualization"
  issue: 6
  volume: 60
  year: 2021
  url: "https://joss.theoj.org/papers/10.21105/joss.03021"


================================================
FILE: LICENSE.md
================================================
Copyright (c) 2012-2023, Michael L. Waskom
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
  list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice,
  this list of conditions and the following disclaimer in the documentation
  and/or other materials provided with the distribution.

* Neither the name of the project nor the names of its
  contributors may be used to endorse or promote products derived from
  this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


================================================
FILE: Makefile
================================================
export SHELL := /bin/bash

test:
	pytest -n auto --cov=seaborn --cov=tests --cov-config=setup.cfg tests

lint:
	flake8 seaborn/ tests/

typecheck:
	mypy --follow-imports=skip seaborn/_core seaborn/_marks seaborn/_stats


================================================
FILE: README.md
================================================
<img src="https://raw.githubusercontent.com/mwaskom/seaborn/master/doc/_static/logo-wide-lightbg.svg"><br>

--------------------------------------

seaborn: statistical data visualization
=======================================

[![PyPI Version](https://img.shields.io/pypi/v/seaborn.svg)](https://pypi.org/project/seaborn/)
[![License](https://img.shields.io/pypi/l/seaborn.svg)](https://github.com/mwaskom/seaborn/blob/master/LICENSE.md)
[![DOI](https://joss.theoj.org/papers/10.21105/joss.03021/status.svg)](https://doi.org/10.21105/joss.03021)
[![Tests](https://github.com/mwaskom/seaborn/workflows/CI/badge.svg)](https://github.com/mwaskom/seaborn/actions)
[![Code Coverage](https://codecov.io/gh/mwaskom/seaborn/branch/master/graph/badge.svg)](https://codecov.io/gh/mwaskom/seaborn)

Seaborn is a Python visualization library based on matplotlib. It provides a high-level interface for drawing attractive statistical graphics.


Documentation
-------------

Online documentation is available at [seaborn.pydata.org](https://seaborn.pydata.org).

The docs include a [tutorial](https://seaborn.pydata.org/tutorial.html), [example gallery](https://seaborn.pydata.org/examples/index.html), [API reference](https://seaborn.pydata.org/api.html), [FAQ](https://seaborn.pydata.org/faq), and other useful information.

To build the documentation locally, please refer to [`doc/README.md`](doc/README.md).

Dependencies
------------

Seaborn supports Python 3.8+.

Installation requires [numpy](https://numpy.org/), [pandas](https://pandas.pydata.org/), and [matplotlib](https://matplotlib.org/). Some advanced statistical functionality requires [scipy](https://www.scipy.org/) and/or [statsmodels](https://www.statsmodels.org/).


Installation
------------

The latest stable release (and required dependencies) can be installed from PyPI:

    pip install seaborn

It is also possible to include optional statistical dependencies:

    pip install seaborn[stats]

Seaborn can also be installed with conda:

    conda install seaborn

Note that the main anaconda repository lags PyPI in adding new releases, but conda-forge (`-c conda-forge`) typically updates quickly.

Citing
------

A paper describing seaborn has been published in the [Journal of Open Source Software](https://joss.theoj.org/papers/10.21105/joss.03021). The paper provides an introduction to the key features of the library, and it can be used as a citation if seaborn proves integral to a scientific publication.

Testing
-------

Testing seaborn requires installing additional dependencies; they can be installed with the `dev` extra (e.g., `pip install .[dev]`).

To test the code, run `make test` in the source directory. This will exercise the unit tests (using [pytest](https://docs.pytest.org/)) and generate a coverage report.

Code style is enforced with `flake8` using the settings in the [`setup.cfg`](./setup.cfg) file. Run `make lint` to check. Alternately, you can use `pre-commit` to automatically run lint checks on any files you are committing: just run `pre-commit install` to set it up, and then commit as usual going forward.

Development
-----------

Seaborn development takes place on Github: https://github.com/mwaskom/seaborn

Please submit bugs that you encounter to the [issue tracker](https://github.com/mwaskom/seaborn/issues) with a reproducible example demonstrating the problem. Questions about usage are more at home on StackOverflow, where there is a [seaborn tag](https://stackoverflow.com/questions/tagged/seaborn).


================================================
FILE: SECURITY.md
================================================
# Security Policy

If you have discovered a security vulnerability in this project, please report it
privately. **Do not disclose it as a public issue.** This gives me time to work with you
to fix the issue before public exposure, reducing the chance that the exploit will be
used before a patch is released.

You may submit the report by filling out
[this form](https://github.com/mwaskom/seaborn/security/advisories/new).

Please provide the following information in your report:

- A description of the vulnerability and its impact
- How to reproduce the issue

This project is maintained by a single maintainer on a reasonable-effort basis. As such,
I ask that you give me 90 days to work on a fix before public exposure.


================================================
FILE: ci/cache_datasets.py
================================================
"""
Cache test datasets before running tests / building docs.

Avoids race conditions that would arise from parallelization.
"""
import pathlib
import re

from seaborn import load_dataset

path = pathlib.Path(".")
py_files = path.rglob("*.py")
ipynb_files = path.rglob("*.ipynb")

datasets = []

for fname in py_files:
    with open(fname) as fid:
        datasets += re.findall(r"load_dataset\(['\"](\w+)['\"]", fid.read())

for p in ipynb_files:
    with p.open() as fid:
        datasets += re.findall(r"load_dataset\(\\['\"](\w+)\\['\"]", fid.read())

for name in sorted(set(datasets)):
    print(f"Caching {name}")
    load_dataset(name)


================================================
FILE: ci/check_gallery.py
================================================
"""Execute the scripts that comprise the example gallery in the online docs."""
from glob import glob
import matplotlib.pyplot as plt

if __name__ == "__main__":

    fnames = sorted(glob("examples/*.py"))

    for fname in fnames:

        print(f"- {fname}")
        with open(fname) as fid:
            exec(fid.read())
        plt.close("all")


================================================
FILE: ci/deps_pinned.txt
================================================
numpy~=1.26.0
pandas~=2.0.0
matplotlib~=3.8.0
scipy~=1.11.0
statsmodels~=0.14.0
pillow~=10.3.0


================================================
FILE: ci/getmsfonts.sh
================================================
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections
apt-get install msttcorefonts -qq


================================================
FILE: doc/.gitignore
================================================
*_files/
_build/
generated/
examples/
example_thumbs/*.png
docstrings/
tutorial/
tutorial/_images
tutorial.rst


================================================
FILE: doc/Makefile
================================================
# Makefile for Sphinx documentation
#

# You can set these variables from the command line.
SPHINXOPTS    =
SPHINXBUILD   = sphinx-build
PAPER         =
BUILDDIR      = _build

# Internal variables.
PAPEROPT_a4     = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .

.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext

help:
	@echo "Please use \`make <target>' where <target> is one of"
	@echo "  clean      to remove generated output"
	@echo "  html       to make standalone HTML files"
	@echo "  notebooks  to make the Jupyter notebook-based tutorials"
	@echo "  dirhtml    to make HTML files named index.html in directories"
	@echo "  singlehtml to make a single large HTML file"
	@echo "  pickle     to make pickle files"
	@echo "  json       to make JSON files"
	@echo "  htmlhelp   to make HTML files and a HTML help project"
	@echo "  qthelp     to make HTML files and a qthelp project"
	@echo "  devhelp    to make HTML files and a Devhelp project"
	@echo "  epub       to make an epub"
	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
	@echo "  text       to make text files"
	@echo "  man        to make manual pages"
	@echo "  texinfo    to make Texinfo files"
	@echo "  info       to make Texinfo files and run them through makeinfo"
	@echo "  gettext    to make PO message catalogs"
	@echo "  changes    to make an overview of all changed/added/deprecated items"
	@echo "  linkcheck  to check all external links for integrity"
	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"

clean:
	-rm -rf $(BUILDDIR)/*
	-rm -rf examples/*
	-rm -rf example_thumbs/*
	-rm -rf generated/*
	-rm -rf tutorial.rst
	-$(MAKE) -C _docstrings clean
	-$(MAKE) -C _tutorial clean

.PHONY: tutorials
tutorials:
	@mkdir -p tutorial
	@$(MAKE) -C _tutorial

.PHONY: docstrings
docstrings:
	@mkdir -p docstrings
	@$(MAKE) -C _docstrings

notebooks: tutorials docstrings

html:
	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
	@echo
	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."

dirhtml:
	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
	@echo
	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."

singlehtml:
	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
	@echo
	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."

pickle:
	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
	@echo
	@echo "Build finished; now you can process the pickle files."

json:
	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
	@echo
	@echo "Build finished; now you can process the JSON files."

htmlhelp:
	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
	@echo
	@echo "Build finished; now you can run HTML Help Workshop with the" \
	      ".hhp project file in $(BUILDDIR)/htmlhelp."

qthelp:
	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
	@echo
	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/lyman.qhcp"
	@echo "To view the help file:"
	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/lyman.qhc"

devhelp:
	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
	@echo
	@echo "Build finished."
	@echo "To view the help file:"
	@echo "# mkdir -p $$HOME/.local/share/devhelp/lyman"
	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/lyman"
	@echo "# devhelp"

epub:
	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
	@echo
	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."

latex:
	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
	@echo
	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
	@echo "Run \`make' in that directory to run these through (pdf)latex" \
	      "(use \`make latexpdf' here to do that automatically)."

latexpdf:
	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
	@echo "Running LaTeX files through pdflatex..."
	$(MAKE) -C $(BUILDDIR)/latex all-pdf
	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."

text:
	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
	@echo
	@echo "Build finished. The text files are in $(BUILDDIR)/text."

man:
	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
	@echo
	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."

texinfo:
	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
	@echo
	@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
	@echo "Run \`make' in that directory to run these through makeinfo" \
	      "(use \`make info' here to do that automatically)."

info:
	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
	@echo "Running Texinfo files through makeinfo..."
	make -C $(BUILDDIR)/texinfo info
	@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."

gettext:
	$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
	@echo
	@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."

changes:
	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
	@echo
	@echo "The overview file is in $(BUILDDIR)/changes."

linkcheck:
	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
	@echo
	@echo "Link check complete; look for any errors in the above output " \
	      "or in $(BUILDDIR)/linkcheck/output.txt."

doctest:
	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
	@echo "Testing of doctests in the sources finished, look at the " \
	      "results in $(BUILDDIR)/doctest/output.txt."


================================================
FILE: doc/README.md
================================================
Building the seaborn docs
=========================

Building the docs requires additional dependencies; they can be installed with `pip install seaborn[stats,docs]`.

The build process involves conversion of Jupyter notebooks to `rst` files. To facilitate this, you may need to set `NB_KERNEL` environment variable to the name of a kernel on your machine (e.g. `export NB_KERNEL="python3"`). To get a list of available Python kernels, run `jupyter kernelspec list`.

After you're set up, run `make notebooks html` from the `doc` directory to convert all notebooks, generate all gallery examples, and build the documentation itself. The site will live in `_build/html`.

Run `make clean` to delete the built site and all intermediate files. Run `make -C docstrings clean` or `make -C tutorial clean` to remove intermediate files for the API or tutorial components.

If your goal is to obtain an offline copy of the docs for a released version, it may be easier to clone the [website repository](https://github.com/seaborn/seaborn.github.io) or to download a zipfile corresponding to a [specific version](https://github.com/seaborn/seaborn.github.io/tags).


================================================
FILE: doc/_docstrings/FacetGrid.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme(style=\"ticks\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Calling the constructor requires a long-form data object. This initializes the grid, but doesn't plot anything on it:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "tips = sns.load_dataset(\"tips\")\n",
    "sns.FacetGrid(tips)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Assign column and/or row variables to add more subplots to the figure:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.FacetGrid(tips, col=\"time\", row=\"sex\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "To draw a plot on every facet, pass a function and the name of one or more columns in the dataframe to :meth:`FacetGrid.map`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.FacetGrid(tips, col=\"time\",  row=\"sex\")\n",
    "g.map(sns.scatterplot, \"total_bill\", \"tip\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "The variable specification in :meth:`FacetGrid.map` requires a positional argument mapping, but if the function has a ``data`` parameter and accepts named variable assignments, you can also use :meth:`FacetGrid.map_dataframe`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.FacetGrid(tips, col=\"time\",  row=\"sex\")\n",
    "g.map_dataframe(sns.histplot, x=\"total_bill\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Notice how the bins have different widths in each facet. A separate plot is drawn on each facet, so if the plotting function derives any parameters from the data, they may not be shared across facets. You can pass additional keyword arguments to synchronize them. But when possible, using a figure-level function like :func:`displot` will take care of this bookkeeping for you:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.FacetGrid(tips, col=\"time\", row=\"sex\")\n",
    "g.map_dataframe(sns.histplot, x=\"total_bill\", binwidth=2, binrange=(0, 60))"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "The :class:`FacetGrid` constructor accepts a ``hue`` parameter. Setting this will condition the data on another variable and make multiple plots in different colors. Where possible, label information is tracked so that a single legend can be drawn:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.FacetGrid(tips, col=\"time\", hue=\"sex\")\n",
    "g.map_dataframe(sns.scatterplot, x=\"total_bill\", y=\"tip\")\n",
    "g.add_legend()"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "When ``hue`` is set on the :class:`FacetGrid`, however, a separate plot is drawn for each level of the variable. If the plotting function understands ``hue``, it is better to let it handle that logic. But it is important to ensure that each facet will use the same hue mapping. In the sample ``tips`` data, the ``sex`` column has a categorical datatype, which ensures this. Otherwise, you may want to use the `hue_order` or similar parameter:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.FacetGrid(tips, col=\"time\")\n",
    "g.map_dataframe(sns.scatterplot, x=\"total_bill\", y=\"tip\", hue=\"sex\")\n",
    "g.add_legend()"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "The size and shape of the plot is specified at the level of each subplot using the ``height`` and ``aspect`` parameters:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.FacetGrid(tips, col=\"day\", height=3.5, aspect=.65)\n",
    "g.map(sns.histplot, \"total_bill\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "If the variable assigned to ``col`` has many levels, it is possible to \"wrap\" it so that it spans multiple rows:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.FacetGrid(tips, col=\"size\", height=2.5, col_wrap=3)\n",
    "g.map(sns.histplot, \"total_bill\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "To add horizontal or vertical reference lines on every facet, use :meth:`FacetGrid.refline`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.FacetGrid(tips, col=\"time\", margin_titles=True)\n",
    "g.map_dataframe(sns.scatterplot, x=\"total_bill\", y=\"tip\")\n",
    "g.refline(y=tips[\"tip\"].median())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can pass custom functions to plot with, or to annotate each facet. Your custom function must use the matplotlib state-machine interface to plot on the \"current\" axes, and it should catch additional keyword arguments:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "def annotate(data, **kws):\n",
    "    n = len(data)\n",
    "    ax = plt.gca()\n",
    "    ax.text(.1, .6, f\"N = {n}\", transform=ax.transAxes)\n",
    "\n",
    "g = sns.FacetGrid(tips, col=\"time\")\n",
    "g.map_dataframe(sns.scatterplot, x=\"total_bill\", y=\"tip\")\n",
    "g.map_dataframe(annotate)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "The :class:`FacetGrid` object has some other useful parameters and methods for tweaking the plot:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.FacetGrid(tips, col=\"sex\", row=\"time\", margin_titles=True)\n",
    "g.map_dataframe(sns.scatterplot, x=\"total_bill\", y=\"tip\")\n",
    "g.set_axis_labels(\"Total bill ($)\", \"Tip ($)\")\n",
    "g.set_titles(col_template=\"{col_name} patrons\", row_template=\"{row_name}\")\n",
    "g.set(xlim=(0, 60), ylim=(0, 12), xticks=[10, 30, 50], yticks=[2, 6, 10])\n",
    "g.tight_layout()\n",
    "g.savefig(\"facet_plot.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import os\n",
    "if os.path.exists(\"facet_plot.png\"):\n",
    "    os.remove(\"facet_plot.png\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "You also have access to the underlying matplotlib objects for additional tweaking:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.FacetGrid(tips, col=\"sex\", row=\"time\", margin_titles=True, despine=False)\n",
    "g.map_dataframe(sns.scatterplot, x=\"total_bill\", y=\"tip\")\n",
    "g.figure.subplots_adjust(wspace=0, hspace=0)\n",
    "for (row_val, col_val), ax in g.axes_dict.items():\n",
    "    if row_val == \"Lunch\" and col_val == \"Female\":\n",
    "        ax.set_facecolor(\".95\")\n",
    "    else:\n",
    "        ax.set_facecolor((0, 0, 0, 0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}


================================================
FILE: doc/_docstrings/JointGrid.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme()"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Calling the constructor initializes the figure, but it does not plot anything:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "penguins = sns.load_dataset(\"penguins\")\n",
    "sns.JointGrid(data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "The simplest plotting method, :meth:`JointGrid.plot` accepts a pair of functions (one for the joint axes and one for both marginal axes):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.JointGrid(data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\")\n",
    "g.plot(sns.scatterplot, sns.histplot)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "The :meth:`JointGrid.plot` function also accepts additional keyword arguments, but it passes them to both functions:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.JointGrid(data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\")\n",
    "g.plot(sns.scatterplot, sns.histplot, alpha=.7, edgecolor=\".2\", linewidth=.5)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "If you need to pass different keyword arguments to each function, you'll have to invoke :meth:`JointGrid.plot_joint` and :meth:`JointGrid.plot_marginals`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.JointGrid(data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\")\n",
    "g.plot_joint(sns.scatterplot, s=100, alpha=.5)\n",
    "g.plot_marginals(sns.histplot, kde=True)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "You can also set up the grid without assigning any data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.JointGrid()"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "You can then plot by accessing the ``ax_joint``, ``ax_marg_x``, and ``ax_marg_y`` attributes, which are :class:`matplotlib.axes.Axes` objects:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.JointGrid()\n",
    "x, y = penguins[\"bill_length_mm\"], penguins[\"bill_depth_mm\"]\n",
    "sns.scatterplot(x=x, y=y, ec=\"b\", fc=\"none\", s=100, linewidth=1.5, ax=g.ax_joint)\n",
    "sns.histplot(x=x, fill=False, linewidth=2, ax=g.ax_marg_x)\n",
    "sns.kdeplot(y=y, linewidth=2, ax=g.ax_marg_y)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "The plotting methods can use any seaborn functions that accept ``x`` and ``y`` variables:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.JointGrid(data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\")\n",
    "g.plot(sns.regplot, sns.boxplot)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "If the functions accept a ``hue`` variable, you can use it by assigning ``hue`` when you call the constructor:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.JointGrid(data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\", hue=\"species\")\n",
    "g.plot(sns.scatterplot, sns.histplot)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Horizontal and/or vertical reference lines can be added to the joint and/or marginal axes using :meth:`JointGrid.refline`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.JointGrid(data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\")\n",
    "g.plot(sns.scatterplot, sns.histplot)\n",
    "g.refline(x=45, y=16)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "The figure will always be square (unless you resize it at the matplotlib layer), but its overall size and layout are configurable. The size is controlled by the ``height`` parameter. The relative ratio between the joint and marginal axes is controlled by ``ratio``, and the amount of space between the plots is controlled by ``space``:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.JointGrid(height=4, ratio=2, space=.05)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "By default, the ticks on the density axis of the marginal plots are turned off, but this is configurable:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.JointGrid(marginal_ticks=True)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Limits on the two data axes (which are shared across plots) can also be defined when setting up the figure:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.JointGrid(xlim=(-2, 5), ylim=(0, 10))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}


================================================
FILE: doc/_docstrings/Makefile
================================================
rst_files := $(patsubst %.ipynb,../docstrings/%.rst,$(wildcard *.ipynb))
export MPLBACKEND := module://matplotlib_inline.backend_inline

docstrings: ${rst_files}

../docstrings/%.rst: %.ipynb
	../tools/nb_to_doc.py $*.ipynb ../docstrings
	@cp -r ../docstrings/$*_files ../generated/
	@if [ -f ../generated/seaborn.$*.rst ]; then \
	    touch ../generated/seaborn.$*.rst; \
	 fi

clean:
	rm -rf ../docstrings


================================================
FILE: doc/_docstrings/PairGrid.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns; sns.set_theme()\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Calling the constructor sets up a blank grid of subplots with each row and one column corresponding to a numeric variable in the dataset:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "penguins = sns.load_dataset(\"penguins\")\n",
    "g = sns.PairGrid(penguins)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Passing a bivariate function to :meth:`PairGrid.map` will draw a bivariate plot on every axes:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.PairGrid(penguins)\n",
    "g.map(sns.scatterplot)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Passing separate functions to :meth:`PairGrid.map_diag` and :meth:`PairGrid.map_offdiag` will show each variable's marginal distribution on the diagonal:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.PairGrid(penguins)\n",
    "g.map_diag(sns.histplot)\n",
    "g.map_offdiag(sns.scatterplot)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "It's also possible to use different functions on the upper and lower triangles of the plot (which are otherwise redundant):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.PairGrid(penguins, diag_sharey=False)\n",
    "g.map_upper(sns.scatterplot)\n",
    "g.map_lower(sns.kdeplot)\n",
    "g.map_diag(sns.kdeplot)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Or to avoid the redundancy altogether:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.PairGrid(penguins, diag_sharey=False, corner=True)\n",
    "g.map_lower(sns.scatterplot)\n",
    "g.map_diag(sns.kdeplot)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "The :class:`PairGrid` constructor accepts a ``hue`` variable. This variable is passed directly to functions that understand it:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.PairGrid(penguins, hue=\"species\")\n",
    "g.map_diag(sns.histplot)\n",
    "g.map_offdiag(sns.scatterplot)\n",
    "g.add_legend()"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "But you can also pass matplotlib functions, in which case a groupby is performed internally and a separate plot is drawn for each level:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.PairGrid(penguins, hue=\"species\")\n",
    "g.map_diag(plt.hist)\n",
    "g.map_offdiag(plt.scatter)\n",
    "g.add_legend()"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Additional semantic variables can be assigned by passing data vectors directly while mapping the function:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.PairGrid(penguins, hue=\"species\")\n",
    "g.map_diag(sns.histplot)\n",
    "g.map_offdiag(sns.scatterplot, size=penguins[\"sex\"])\n",
    "g.add_legend(title=\"\", adjust_subtitles=True)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "When using seaborn functions that can implement a numeric hue mapping, you will want to disable mapping of the variable on the diagonal axes. Note that the ``hue`` variable is excluded from the list of variables shown by default:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.PairGrid(penguins, hue=\"body_mass_g\")\n",
    "g.map_diag(sns.histplot, hue=None, color=\".3\")\n",
    "g.map_offdiag(sns.scatterplot)\n",
    "g.add_legend()"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "The ``vars`` parameter can be used to control exactly which variables are used:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "variables = [\"body_mass_g\", \"bill_length_mm\", \"flipper_length_mm\"]\n",
    "g = sns.PairGrid(penguins, hue=\"body_mass_g\", vars=variables)\n",
    "g.map_diag(sns.histplot, hue=None, color=\".3\")\n",
    "g.map_offdiag(sns.scatterplot)\n",
    "g.add_legend()"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "The plot need not be square: separate variables can be used to define the rows and columns:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_vars = [\"body_mass_g\", \"bill_length_mm\", \"bill_depth_mm\", \"flipper_length_mm\"]\n",
    "y_vars = [\"body_mass_g\"]\n",
    "g = sns.PairGrid(penguins, hue=\"species\", x_vars=x_vars, y_vars=y_vars)\n",
    "g.map_diag(sns.histplot, color=\".3\")\n",
    "g.map_offdiag(sns.scatterplot)\n",
    "g.add_legend()"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "It can be useful to explore different approaches to resolving multiple distributions on the diagonal axes:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.PairGrid(penguins, hue=\"species\")\n",
    "g.map_diag(sns.histplot, multiple=\"stack\", element=\"step\")\n",
    "g.map_offdiag(sns.scatterplot)\n",
    "g.add_legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}


================================================
FILE: doc/_docstrings/axes_style.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "dated-mother",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "prospective-sellers",
   "metadata": {},
   "source": [
    "Calling with no arguments will return the current defaults for the style parameters:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "recognized-rehabilitation",
   "metadata": {
    "tags": [
     "show-output"
    ]
   },
   "outputs": [],
   "source": [
    "sns.axes_style()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "furnished-irrigation",
   "metadata": {},
   "source": [
    "Calling with the name of a predefined style will show those parameter values:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "coordinate-reward",
   "metadata": {
    "tags": [
     "show-output"
    ]
   },
   "outputs": [],
   "source": [
    "sns.axes_style(\"darkgrid\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "mediterranean-picking",
   "metadata": {},
   "source": [
    "Use the function as a context manager to temporarily change the style of your plots:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "missing-essence",
   "metadata": {},
   "outputs": [],
   "source": [
    "with sns.axes_style(\"whitegrid\"):\n",
    "    sns.barplot(x=[1, 2, 3], y=[2, 5, 3])"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/barplot.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6a6d582b-08c2-4fed-be56-afa1b986943a",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme(style=\"whitegrid\")\n",
    "penguins = sns.load_dataset(\"penguins\")\n",
    "flights = sns.load_dataset(\"flights\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "b53b65b8-5670-4905-aa39-36db04f4b813",
   "metadata": {},
   "source": [
    "With long data, assign `x` and `y` to group by a categorical variable and plot aggregated values, with confidence intervals:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0f5c3ece-6295-4933-8a87-e80cd604c089",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.barplot(penguins, x=\"island\", y=\"body_mass_g\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "ed061d6f-bd3b-4189-bbc7-aed998be05cb",
   "metadata": {},
   "source": [
    "Prior to v0.13.0, each bar would have a different color. To replicate this behavior, assign the grouping variable to `hue` as well:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3ded2e23-c610-450b-bcd2-1d2ba54db566",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.barplot(penguins, x=\"body_mass_g\", y=\"island\", hue=\"island\", legend=False)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "e00fa127-4dd4-4565-9897-51317adfea3c",
   "metadata": {},
   "source": [
    "When plotting a \"wide-form\" dataframe, each column will be aggregated and represented as a bar:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ae7e0f4e-471e-4dee-8913-5e7b67e0a381",
   "metadata": {},
   "outputs": [],
   "source": [
    "flights_wide = flights.pivot(index=\"year\", columns=\"month\", values=\"passengers\")\n",
    "sns.barplot(flights_wide)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "6020404c-15c6-4c00-9ffd-6c12ba624e52",
   "metadata": {},
   "source": [
    "Passing only a series (or dict) will plot each of its values, using the index (or keys) to label the bars:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "77b2c3eb-c3e4-4d44-929a-27a456da4b88",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.barplot(flights_wide[\"Jun\"])"
   ]
  },
  {
   "cell_type": "raw",
   "id": "b0c3b101-7649-4014-9ab2-10ff206d39d7",
   "metadata": {},
   "source": [
    "With long-form data, you can add a second layer of grouping with `hue`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ac1a28d1-b3bd-4158-86d0-3defc12f8566",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.barplot(penguins, x=\"island\", y=\"body_mass_g\", hue=\"sex\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "069ce509-ee0d-42c8-b053-1b4b6d764449",
   "metadata": {},
   "source": [
    "Use the error bars to show the standard deviation rather than a confidence interval:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "10445b78-a74a-4f14-a28b-a9164e592ae4",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.barplot(penguins, x=\"island\", y=\"body_mass_g\", errorbar=\"sd\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "6dc3d564-4d26-4753-a2a0-6194b10452bc",
   "metadata": {},
   "source": [
    "Use a different aggregation function and disable the error bars:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "448ba05e-c533-459d-84b6-0fca80e6e3ce",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.barplot(flights, x=\"year\", y=\"passengers\", estimator=\"sum\", errorbar=None)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "7746220d-b6b4-4ee5-886c-5867db35d4e3",
   "metadata": {},
   "source": [
    "Add text labels with each bar's value:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e343485c-636e-4b96-b20d-59a7f7155be8",
   "metadata": {},
   "outputs": [],
   "source": [
    "ax = sns.barplot(flights, x=\"year\", y=\"passengers\", estimator=\"sum\", errorbar=None)\n",
    "ax.bar_label(ax.containers[0], fontsize=10);"
   ]
  },
  {
   "cell_type": "raw",
   "id": "457702c2-9fa6-4021-a19b-f44b39aa0a19",
   "metadata": {},
   "source": [
    "Preserve the original scaling of the grouping variable and add annotations in numeric coordinates:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "08b60118-5830-4fd7-8a66-431c065d57cb",
   "metadata": {},
   "outputs": [],
   "source": [
    "ax = sns.barplot(\n",
    "    flights, x=\"year\", y=\"passengers\",\n",
    "    native_scale=True,\n",
    "    estimator=\"sum\", errorbar=None,\n",
    ")\n",
    "ax.plot(1955, 3600, \"*\", markersize=10, color=\"r\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "206be839-f33b-4ffe-8101-bd98bc5942b8",
   "metadata": {},
   "source": [
    "Use `orient` to resolve ambiguity about which variable should group when both are numeric:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3aff3c69-3c24-40ad-af12-a507e33f5d3f",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.barplot(flights, x=\"passengers\", y=\"year\", orient=\"y\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "90277a3b-1f86-4884-97ad-e5d65df408ef",
   "metadata": {},
   "source": [
    "Customize the appearance of the plot using :class:`matplotlib.patches.Rectangle` and :class:`matplotlib.lines.Line2D` keyword arguments:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d6f9ac1c-a77d-4ee3-bc5e-fec2071b33df",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.barplot(\n",
    "    penguins, x=\"body_mass_g\", y=\"island\",\n",
    "    errorbar=(\"pi\", 50), capsize=.4,\n",
    "    err_kws={\"color\": \".5\", \"linewidth\": 2.5},\n",
    "    linewidth=2.5, edgecolor=\".5\", facecolor=(0, 0, 0, 0),\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "08ef562f-13a3-4da5-a9cf-46deaa543890",
   "metadata": {},
   "source": [
    "Use :func:`catplot` to draw faceted bars, which is recommended over working directly with :class:`FacetGrid`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4d23777f-8a69-4c68-ab35-3e6740c61bcf",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.catplot(\n",
    "    penguins, kind=\"bar\",\n",
    "    x=\"sex\", y=\"body_mass_g\", col=\"species\",\n",
    "    height=4, aspect=.5,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0b6a62b9-eef7-4c85-a1c2-85a58231e6c6",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/blend_palette.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8f97280e-cec8-42b2-a968-4fd4364594f8",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme()\n",
    "sns.palettes._patch_colormap_display()"
   ]
  },
  {
   "cell_type": "raw",
   "id": "972edede-df1a-4010-9674-00b864d020e2",
   "metadata": {},
   "source": [
    "Pass a list of two colors to interpolate between them:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e6ae2547-1042-4ac0-84ea-6f37a0229871",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.blend_palette([\"b\", \"r\"])"
   ]
  },
  {
   "cell_type": "raw",
   "id": "1d983eac-2dd5-4746-b27f-4dfa19b5e091",
   "metadata": {},
   "source": [
    "The color list can be arbitrarily long, and any color format can be used:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "846b78fd-30ce-4507-93f4-4274122c1987",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.blend_palette([\"#45a872\", \".8\", \"xkcd:golden\"])"
   ]
  },
  {
   "cell_type": "raw",
   "id": "318fef32-1f83-44d9-9ff9-21fa0231b7c6",
   "metadata": {},
   "source": [
    "Return a continuous colormap instead of a discrete palette:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f0a05bc3-c60b-47a1-b276-d2e28a4a8226",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.blend_palette([\"#bdc\", \"#7b9\", \"#47a\"], as_cmap=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0473a402-0ec2-4877-81d2-ed6c57aefc77",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/boxenplot.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "882d215b-88d8-4b5e-ae7a-0e3f6bb53bad",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": ""
    },
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme(style=\"whitegrid\")\n",
    "diamonds = sns.load_dataset(\"diamonds\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "9b8b892e-a96f-46e8-9c5e-8749783608d8",
   "metadata": {
    "editable": true,
    "raw_mimetype": "",
    "slideshow": {
     "slide_type": ""
    },
    "tags": []
   },
   "source": [
    "Draw a single horizontal plot, assigning the data directly to the coordinate variable:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "391e1162-b438-4486-9a08-60686ee8e96a",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": ""
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "sns.boxenplot(x=diamonds[\"price\"])"
   ]
  },
  {
   "cell_type": "raw",
   "id": "b0c5a469-c709-4333-a8bc-b2cb34f366aa",
   "metadata": {
    "editable": true,
    "raw_mimetype": "",
    "slideshow": {
     "slide_type": ""
    },
    "tags": []
   },
   "source": [
    "Group by a categorical variable, referencing columns in a datafame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e30fec18-f127-40a3-bfaf-f71324dd60ec",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": ""
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "sns.boxenplot(data=diamonds, x=\"price\", y=\"clarity\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "70fe999a-bea5-4b0a-a1a3-474b6696d1be",
   "metadata": {
    "editable": true,
    "raw_mimetype": "",
    "slideshow": {
     "slide_type": ""
    },
    "tags": []
   },
   "source": [
    "Group by another variable, representing it by the color of the boxes. By default, each boxen plot will be \"dodged\" so that they don't overlap; you can also add a small gap between them:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "eed3239c-57b7-4d76-9fdc-be99257047fd",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": ""
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "large_diamond = diamonds[\"carat\"].gt(1).rename(\"large_diamond\")\n",
    "sns.boxenplot(data=diamonds, x=\"price\", y=\"clarity\", hue=large_diamond, gap=.2)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "36030c1c-047b-4f7b-b366-91188b41680e",
   "metadata": {
    "editable": true,
    "raw_mimetype": "",
    "slideshow": {
     "slide_type": ""
    },
    "tags": []
   },
   "source": [
    "The default rule for choosing each box width represents the percentile covered by the box. Alternatively, you can reduce each box width by a linear factor:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d0c1aa43-5e8a-486c-bd6d-3c29d6d23138",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": ""
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "sns.boxenplot(data=diamonds, x=\"price\", y=\"clarity\", width_method=\"linear\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "062a9fc2-9cbe-4e40-af8c-3fd35f785cd5",
   "metadata": {
    "editable": true,
    "raw_mimetype": "",
    "slideshow": {
     "slide_type": ""
    },
    "tags": []
   },
   "source": [
    "The `width` parameter itself, on the other hand, determines the width of the largest box:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4100a460-fe27-42b7-bbaf-4430a1c1359f",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": ""
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "sns.boxenplot(data=diamonds, x=\"price\", y=\"clarity\", width=.5)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "407874a8-1202-4bcc-9f65-59e1fed29e07",
   "metadata": {
    "editable": true,
    "raw_mimetype": "",
    "slideshow": {
     "slide_type": ""
    },
    "tags": []
   },
   "source": [
    "There are several different approaches for choosing the number of boxes to draw, including a rule based on the confidence level of the percentile estimate:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1aead6a3-6f12-47d3-b472-a39c61867963",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": ""
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "sns.boxenplot(data=diamonds, x=\"price\", y=\"clarity\", k_depth=\"trustworthy\", trust_alpha=0.01)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "71212196-d60e-4682-8dcb-0289956be152",
   "metadata": {
    "editable": true,
    "raw_mimetype": "",
    "slideshow": {
     "slide_type": ""
    },
    "tags": []
   },
   "source": [
    "The `linecolor` and `linewidth` parameters control the outlines of the boxes, while the `line_kws` parameter controls the line representing the median and the `flier_kws` parameter controls the appearance of the outliers:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "dd103426-a99f-476b-ae29-a11d52958cdb",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": ""
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "sns.boxenplot(\n",
    "    data=diamonds, x=\"price\", y=\"clarity\",\n",
    "    linewidth=.5, linecolor=\".7\",\n",
    "    line_kws=dict(linewidth=1.5, color=\"#cde\"),\n",
    "    flier_kws=dict(facecolor=\".7\", linewidth=.5),\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "16f1c534-3316-4752-ae12-f65dee9275cb",
   "metadata": {
    "editable": true,
    "raw_mimetype": "",
    "slideshow": {
     "slide_type": ""
    },
    "tags": []
   },
   "source": [
    "It is also possible to draw unfilled boxes. With unfilled boxes, all elements will be drawn as line art and follow `hue`, when used:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ab6aef09-5bbe-4c01-b6ba-05446982d775",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": ""
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "sns.boxenplot(data=diamonds, x=\"price\", y=\"clarity\", hue=\"clarity\", fill=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e059b944-ea59-408d-87bb-4ce65074dab5",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": ""
    },
    "tags": []
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/boxplot.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7edcf92f-6c11-4dc4-b684-118b3235d067",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme(style=\"whitegrid\")\n",
    "titanic = sns.load_dataset(\"titanic\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "4ca96805-333b-4186-9ad7-dcef4a9aacf5",
   "metadata": {},
   "source": [
    "Draw a single horizontal boxplot, assigning the data directly to the coordinate variable:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "80532f2c-0f34-456c-9d5c-673682385461",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.boxplot(x=titanic[\"age\"])"
   ]
  },
  {
   "cell_type": "raw",
   "id": "d9e33318-9595-4132-bfbd-8d88905fea79",
   "metadata": {},
   "source": [
    "Group by a categorical variable, referencing columns in a dataframe:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f1e0a6a4-151d-42d7-a098-ec9b91f20906",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.boxplot(data=titanic, x=\"age\", y=\"class\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "d1e0d9e7-2d9b-49e3-8bb3-d97f2de7e733",
   "metadata": {},
   "source": [
    "Draw a vertical boxplot with nested grouping by two variables:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b8f74dc4-2b59-423a-90a7-dbf900c89251",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.boxplot(data=titanic, x=\"class\", y=\"age\", hue=\"alive\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "59aaff3f-2bba-44d1-9901-2dd680bad3ad",
   "metadata": {},
   "source": [
    "Draw the boxes as line art and add a small gap between them:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6af681be-c49e-4794-8a92-90c58ef330f9",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.boxplot(data=titanic, x=\"class\", y=\"age\", hue=\"alive\", fill=False, gap=.1)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "db4ef9cb-0f0d-458b-a06d-c537c2b4d733",
   "metadata": {},
   "source": [
    "Cover the full range of the data with the whiskers:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "89aab45a-bc58-44e9-94ac-6a9aa0b20f5e",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.boxplot(data=titanic, x=\"age\", y=\"deck\", whis=(0, 100))"
   ]
  },
  {
   "cell_type": "raw",
   "id": "3844cc78-19a5-46e3-babd-77d6d7affcf0",
   "metadata": {},
   "source": [
    "Draw narrower boxes:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "399825eb-698a-4464-8a04-505b6bf7edc7",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.boxplot(data=titanic, x=\"age\", y=\"deck\", width=.5)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "eaf35104-022d-4a20-9b60-f8b24acc7471",
   "metadata": {},
   "source": [
    "Modify the color and width of all the line artists:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6e9dcaa3-b497-480e-b134-d31e01a7d4c5",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.boxplot(data=titanic, x=\"age\", y=\"deck\", color=\".8\", linecolor=\"#137\", linewidth=.75)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8a188c80-d69f-4a07-9b0d-ca467d2be680",
   "metadata": {},
   "source": [
    "Group by a numeric variable and preserve its native scaling:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9d73c63f-58a8-4659-96fd-964493ba3a50",
   "metadata": {},
   "outputs": [],
   "source": [
    "ax = sns.boxplot(x=titanic[\"age\"].round(-1), y=titanic[\"fare\"], native_scale=True)\n",
    "ax.axvline(25, color=\".3\", dashes=(2, 2))"
   ]
  },
  {
   "cell_type": "raw",
   "id": "28536179-8400-462d-bf3e-3d9f353fe03b",
   "metadata": {},
   "source": [
    "Customize the plot using parameters of the underlying matplotlib function:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "66c81b6e-e7fb-46c5-aa7b-f001241569b0",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.boxplot(\n",
    "    data=titanic, x=\"age\", y=\"class\",\n",
    "    notch=True, showcaps=False,\n",
    "    flierprops={\"marker\": \"x\"},\n",
    "    boxprops={\"facecolor\": (.3, .5, .7, .5)},\n",
    "    medianprops={\"color\": \"r\", \"linewidth\": 2},\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5d2bb11b-0f4a-4efe-b18b-be34ebf24e49",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/catplot.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a8aa6a6a-f6c0-4a6b-9460-2056e58a2e13",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme(style=\"whitegrid\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "1aef2740-ae6e-4a1b-a588-3ad978e2614d",
   "metadata": {},
   "source": [
    "By default, the visual representation will be a jittered strip plot:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "75a49e26-4318-4963-897c-dc0081aebfb3",
   "metadata": {},
   "outputs": [],
   "source": [
    "df = sns.load_dataset(\"titanic\")\n",
    "sns.catplot(data=df, x=\"age\", y=\"class\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "db1b8f6d-5264-4200-b81a-b0ee64040a1f",
   "metadata": {},
   "source": [
    "Use `kind` to select a different representation:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "75ecd034-8536-4fe4-8852-a3975dba64dc",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.catplot(data=df, x=\"age\", y=\"class\", kind=\"box\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8aee79a9-b8b3-4129-b6d7-e9e32ae1e634",
   "metadata": {},
   "source": [
    "One advantage is that the legend will be automatically placed outside the plot:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3798aac6-1ff6-4e36-ad83-4742fcb04159",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.catplot(data=df, x=\"age\", y=\"class\", hue=\"sex\", kind=\"boxen\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8a3777e1-90b6-4f4d-9e14-247b6dfd64fe",
   "metadata": {},
   "source": [
    "Additional keyword arguments get passed through to the underlying seaborn function:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "afcff2fe-db11-4602-af79-68e4a0380f88",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.catplot(\n",
    "    data=df, x=\"age\", y=\"class\", hue=\"sex\",\n",
    "    kind=\"violin\", bw_adjust=.5, cut=0, split=True,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a75bf46f-a3d0-4a5d-abcd-b9e85def65b0",
   "metadata": {},
   "source": [
    "Assigning a variable to `col` or `row` will automatically create subplots. Control figure size with the `height` and `aspect` parameters:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "835afcf2-ecc9-4edb-9ec8-24484c5b08fb",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.catplot(\n",
    "    data=df, x=\"class\", y=\"survived\", col=\"sex\",\n",
    "    kind=\"bar\", height=4, aspect=.6,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ecf323fe-1e86-47ff-aa50-e8c297cfa125",
   "metadata": {},
   "source": [
    "For single-subplot figures, it is easy to layer different representations:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "dc5b0fc0-359c-4219-b04e-171d8c7c8051",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.catplot(data=df, x=\"age\", y=\"class\", kind=\"violin\", color=\".9\", inner=None)\n",
    "sns.swarmplot(data=df, x=\"age\", y=\"class\", size=3)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "26e06ba4-0457-4597-b699-cb0fe8b2be32",
   "metadata": {},
   "source": [
    "Use methods on the returned :class:`FacetGrid` to tweak the presentation:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a43f1914-d868-4060-82df-b3d25553d595",
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.catplot(\n",
    "    data=df, x=\"who\", y=\"survived\", col=\"class\",\n",
    "    kind=\"bar\", height=4, aspect=.6,\n",
    ")\n",
    "g.set_axis_labels(\"\", \"Survival Rate\")\n",
    "g.set_xticklabels([\"Men\", \"Women\", \"Children\"])\n",
    "g.set_titles(\"{col_name} {col_var}\")\n",
    "g.set(ylim=(0, 1))\n",
    "g.despine(left=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a529c18c-45bc-4efb-8ae0-c14518349162",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/clustermap.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ffc1e1d9-fa74-4121-aa87-e1a8665e4c2b",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme()"
   ]
  },
  {
   "cell_type": "raw",
   "id": "41b4f602-32af-44f8-bf1a-0f1695c9abbb",
   "metadata": {},
   "source": [
    "Plot a heatmap with row and column clustering:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c715bd8f-cf5d-4caa-9244-336b3d0248a8",
   "metadata": {},
   "outputs": [],
   "source": [
    "iris = sns.load_dataset(\"iris\")\n",
    "species = iris.pop(\"species\")\n",
    "sns.clustermap(iris)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "1cc3134c-579a-442a-97d8-a878651ce90a",
   "metadata": {},
   "source": [
    "Change the size and layout of the figure:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fd33cf4b-9589-4b9a-a246-0b95bad28c51",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.clustermap(\n",
    "    iris,\n",
    "    figsize=(7, 5),\n",
    "    row_cluster=False,\n",
    "    dendrogram_ratio=(.1, .2),\n",
    "    cbar_pos=(0, .2, .03, .4)\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "c5d3408d-f5d6-4045-9d61-15573a981587",
   "metadata": {},
   "source": [
    "Add colored labels to identify observations:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "79d3fe52-6146-4f33-a39a-1d4a47243ea5",
   "metadata": {},
   "outputs": [],
   "source": [
    "lut = dict(zip(species.unique(), \"rbg\"))\n",
    "row_colors = species.map(lut)\n",
    "sns.clustermap(iris, row_colors=row_colors)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "f2f944e2-36cd-4653-86b4-6d2affec13d6",
   "metadata": {},
   "source": [
    "Use a different colormap and adjust the limits of the color range:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6137c7ad-db92-47b8-9d00-3228c4e1f7df",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.clustermap(iris, cmap=\"mako\", vmin=0, vmax=10)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "93f96d1c-9d04-464f-93c9-4319caa8504a",
   "metadata": {},
   "source": [
    "Use differente clustering parameters:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f9e76bde-a222-4eca-971f-54f56ad53281",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.clustermap(iris, metric=\"correlation\", method=\"single\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "ea6ed3fd-188d-4244-adac-ec0169c02205",
   "metadata": {},
   "source": [
    "Standardize the data within the columns:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e5f744c4-b959-4ed1-b2cf-6046c9214568",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.clustermap(iris, standard_scale=1)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "7ca72242-4eb0-4f8e-b0c0-d1ef7166b738",
   "metadata": {},
   "source": [
    "Normalize the data within rows:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "33815c4c-9bae-4226-bd11-3dfdb7ecab2b",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.clustermap(iris, z_score=0, cmap=\"vlag\", center=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0f37d57a-b049-4665-9c24-4d5fbbca00ba",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/color_palette.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme()\n",
    "sns.palettes._patch_colormap_display()"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Calling with no arguments returns all colors from the current default\n",
    "color cycle:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.color_palette()"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Other variants on the seaborn categorical color palette can be referenced by name:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.color_palette(\"pastel\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Return a specified number of evenly spaced hues in the \"HUSL\" system:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.color_palette(\"husl\", 9)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Return all unique colors in a categorical Color Brewer palette:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.color_palette(\"Set2\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Return a diverging Color Brewer palette as a continuous colormap:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.color_palette(\"Spectral\", as_cmap=True)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Return one of the perceptually-uniform palettes included in seaborn as a discrete palette:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.color_palette(\"flare\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Return one of the perceptually-uniform palettes included in seaborn as a continuous colormap:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.color_palette(\"flare\", as_cmap=True)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Return a customized cubehelix color palette:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.color_palette(\"ch:s=.25,rot=-.25\", as_cmap=True)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Return a light sequential gradient:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.color_palette(\"light:#5A9\", as_cmap=True)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Return a reversed dark sequential gradient:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.color_palette(\"dark:#5A9_r\", as_cmap=True)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Return a blend gradient between two endpoints:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.color_palette(\"blend:#7AB,#EDA\", as_cmap=True)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Use as a context manager to change the default qualitative color palette:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "x, y = list(range(10)), [0] * 10\n",
    "hue = list(map(str, x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "with sns.color_palette(\"Set3\"):\n",
    "    sns.relplot(x=x, y=y, hue=hue, s=500, legend=False, height=1.3, aspect=4)\n",
    "\n",
    "sns.relplot(x=x, y=y, hue=hue, s=500, legend=False, height=1.3, aspect=4)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "See the underlying color values as hex codes:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": [
     "show-output"
    ]
   },
   "outputs": [],
   "source": [
    "print(sns.color_palette(\"pastel6\").as_hex())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}


================================================
FILE: doc/_docstrings/countplot.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2fdf0f63-d515-4cb8-b3e0-62cac7852b12",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme(style=\"whitegrid\")\n",
    "titanic = sns.load_dataset(\"titanic\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "af16d745-734a-4f11-9f8f-fa54deadfb12",
   "metadata": {},
   "source": [
    "Show the count of value for a single categorical variable:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6e9d0485-870d-4841-9c84-6e0bacbde7db",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.countplot(titanic, x=\"class\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "173f47c4-d5fb-4fc0-bdbd-ec228419d451",
   "metadata": {},
   "source": [
    "Group by a second variable:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "26f73c00-a2b3-45c3-b3cd-2babe0a81894",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.countplot(titanic, x=\"class\", hue=\"survived\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "377bfb01-64a2-4f07-b06b-fb1a4f7c3b12",
   "metadata": {},
   "source": [
    "Normalize the counts to show percentages:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7267aefc-f2bc-4a64-956a-bb25013ca9ec",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.countplot(titanic, x=\"class\", hue=\"survived\", stat=\"percent\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/cubehelix_palette.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "60aebc68-2c7c-4af5-a159-8421e1f94ba6",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme()\n",
    "sns.palettes._patch_colormap_display()"
   ]
  },
  {
   "cell_type": "raw",
   "id": "242b3d42-1f10-4da2-9ef9-af06f7fbd724",
   "metadata": {},
   "source": [
    "Return a discrete palette with default parameters:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6526accb-9930-4e39-9f58-1ca2941c1c9d",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.cubehelix_palette()"
   ]
  },
  {
   "cell_type": "raw",
   "id": "887a40f0-d949-41fa-9a43-0ee246c9a077",
   "metadata": {},
   "source": [
    "Increase the number of colors:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "02833290-b1ee-46df-a2a0-8268fba94628",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.cubehelix_palette(8)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "a9eb86c7-f92e-4422-ae62-a2ef136e7e35",
   "metadata": {},
   "source": [
    "Return a continuous colormap rather than a discrete palette:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a460efc2-cf0a-46bf-a12f-12870afce8a5",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.cubehelix_palette(as_cmap=True)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "5b84aa6c-ad79-45b1-a7d2-44b7ecba5f7d",
   "metadata": {},
   "source": [
    "Change the starting point of the helix:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "70ee079a-e760-4d43-8447-648fd236ab15",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.cubehelix_palette(start=2)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "5e21fa22-9ac3-4354-8694-967f2447b286",
   "metadata": {},
   "source": [
    "Change the amount of rotation in the helix:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ddb1b8c7-8933-4317-827f-4f10d2b4cecc",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.cubehelix_palette(rot=.2)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "fa91aff7-54e7-4754-a13c-b629dfc33e8f",
   "metadata": {},
   "source": [
    "Rotate in the reverse direction:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "548a3942-48ae-40d2-abb7-acc2ffd71601",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.cubehelix_palette(rot=-.2)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "e7188a1b-183f-4b04-93a0-975c27fe408e",
   "metadata": {},
   "source": [
    "Apply a nonlinearity to the luminance ramp:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9ced54ff-a396-451e-b17f-2366b56f920b",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.cubehelix_palette(gamma=.5)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "bc82ce48-2df3-464e-b70e-a1d73d0432c6",
   "metadata": {},
   "source": [
    "Increase the saturation of the colors:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a38b91a8-3fdc-4293-a3ea-71b4006cd2a1",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.cubehelix_palette(hue=1)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "f8d23ba1-013a-489f-94c4-f2080bfdae87",
   "metadata": {},
   "source": [
    "Change the luminance at the start and end points:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a4f05a16-18f0-4c14-99a4-57a0734aad02",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.cubehelix_palette(dark=.25, light=.75)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "0bfcc5d9-05ba-4715-94ac-8d430d9416c2",
   "metadata": {},
   "source": [
    "Reverse the direction of the luminance ramp:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "74563491-5448-42c3-86c5-f5d55ce6924c",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.cubehelix_palette(reverse=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "94a83211-8b8e-4e60-8365-9600e71ddc5d",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/dark_palette.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5cd1cbb8-ba1a-460b-8e3a-bc285867f1d1",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme()\n",
    "sns.palettes._patch_colormap_display()"
   ]
  },
  {
   "cell_type": "raw",
   "id": "b157eb25-015f-4dd6-9785-83ba19cf4f94",
   "metadata": {},
   "source": [
    "Define a sequential ramp from a dark gray to a specified color:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5b655d28-9855-4528-8b8e-a6c50288fd1b",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.dark_palette(\"seagreen\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "50053b26-112a-4378-8ef0-9be0fb565ec7",
   "metadata": {},
   "source": [
    "Specify the color with a hex code:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "74ae0d17-f65b-4bcf-ae66-d97d46964d5c",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.dark_palette(\"#79C\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "eea376a2-fdf5-40e4-a187-3a28af529072",
   "metadata": {},
   "source": [
    "Specify the color from the husl system:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "66e451ee-869a-41ea-8dc5-4240b11e7be5",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.dark_palette((20, 60, 50), input=\"husl\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "e4f44dcd-cf49-4920-ac05-b4db67870363",
   "metadata": {},
   "source": [
    "Increase the number of colors:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "75985f07-de92-4d8b-89d5-caf445b9375e",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.dark_palette(\"xkcd:golden\", 8)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "34687ae8-fd6d-427a-a639-208f19e61122",
   "metadata": {},
   "source": [
    "Return a continuous colormap rather than a discrete palette:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2c342db4-7f97-40f5-934e-9a82201890d1",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.dark_palette(\"#b285bc\", as_cmap=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e7ebe64b-25fa-4c52-9ebe-fdcbba0ee51e",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/displot.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns; sns.set_theme(style=\"ticks\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "The default plot kind is a histogram:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "penguins = sns.load_dataset(\"penguins\")\n",
    "sns.displot(data=penguins, x=\"flipper_length_mm\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Use the ``kind`` parameter to select a different representation:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.displot(data=penguins, x=\"flipper_length_mm\", kind=\"kde\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There are three main plot kinds; in addition to histograms and kernel density estimates (KDEs), you can also draw empirical cumulative distribution functions (ECDFs):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.displot(data=penguins, x=\"flipper_length_mm\", kind=\"ecdf\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "While in histogram mode, it is also possible to add a KDE curve:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.displot(data=penguins, x=\"flipper_length_mm\", kde=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To draw a bivariate plot, assign both ``x`` and ``y``:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.displot(data=penguins, x=\"flipper_length_mm\", y=\"bill_length_mm\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Currently, bivariate plots are available only for histograms and KDEs:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.displot(data=penguins, x=\"flipper_length_mm\", y=\"bill_length_mm\", kind=\"kde\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For each kind of plot, you can also show individual observations with a marginal \"rug\":"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.displot(data=penguins, x=\"flipper_length_mm\", y=\"bill_length_mm\", kind=\"kde\", rug=True)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Each kind of plot can be drawn separately for subsets of data using ``hue`` mapping:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.displot(data=penguins, x=\"flipper_length_mm\", hue=\"species\", kind=\"kde\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Additional keyword arguments are passed to the appropriate underlying plotting function, allowing for further customization:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.displot(data=penguins, x=\"flipper_length_mm\", hue=\"species\", multiple=\"stack\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "The figure is constructed using a :class:`FacetGrid`, meaning that you can also show subsets on distinct subplots, or \"facets\":"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.displot(data=penguins, x=\"flipper_length_mm\", hue=\"species\", col=\"sex\", kind=\"kde\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Because the figure is drawn with a :class:`FacetGrid`, you control its size and shape with the ``height`` and ``aspect`` parameters:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.displot(\n",
    "    data=penguins, y=\"flipper_length_mm\", hue=\"sex\", col=\"species\",\n",
    "    kind=\"ecdf\", height=4, aspect=.7,\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "The function returns the :class:`FacetGrid` object with the plot, and you can use the methods on this object to customize it further:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.displot(\n",
    "    data=penguins, y=\"flipper_length_mm\", hue=\"sex\", col=\"species\",\n",
    "    kind=\"kde\", height=4, aspect=.7,\n",
    ")\n",
    "g.set_axis_labels(\"Density (a.u.)\", \"Flipper length (mm)\")\n",
    "g.set_titles(\"{col_name} penguins\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}


================================================
FILE: doc/_docstrings/diverging_palette.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "01295cb6-cc7a-4c6d-94cf-9b0e6cde9fa7",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme()\n",
    "sns.palettes._patch_colormap_display()"
   ]
  },
  {
   "cell_type": "raw",
   "id": "84880848-0805-4c41-999a-50808b397275",
   "metadata": {},
   "source": [
    "Generate diverging ramps from blue to red through white:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "643b3e07-8365-46e3-b033-af7a2fdcd158",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.diverging_palette(240, 20)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "5ae53941-d9d9-4b5a-8abc-173911ebee74",
   "metadata": {},
   "source": [
    "Change the center color to be dark:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "41f03771-8fb2-46f6-93c5-5a0e28be625c",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.diverging_palette(240, 20, center=\"dark\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "0aeb2402-2cbe-4546-a354-f1f501f762ae",
   "metadata": {},
   "source": [
    "Return a continuous colormap rather than a discrete palette:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "64d335a5-f8b2-433f-a83f-5aeff7db583a",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.diverging_palette(240, 20, as_cmap=True)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "77223a07-8492-4056-a0f7-14e133e3ce2c",
   "metadata": {},
   "source": [
    "Increase the amount of separation around the center value:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "82472c1e-4b16-40eb-be1d-480bbd2aa702",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.diverging_palette(240, 20, sep=30, as_cmap=True)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "966e8594-b458-414c-a7b0-3e804ce407bf",
   "metadata": {},
   "source": [
    "Use a magenta-to-green palette instead:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a03f8ede-b424-4e06-beb6-cf63c94bcd9e",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.diverging_palette(280, 150)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "b3b17689-58e2-4065-9d52-1cf5ebcd4e89",
   "metadata": {},
   "source": [
    "Decrease the saturation of the endpoints:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "02aaa009-f257-4fc7-a2de-40fbb1464490",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.diverging_palette(280, 150, s=50)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "db75ca48-ba72-4ca2-8480-bc72c20a70cc",
   "metadata": {},
   "source": [
    "Decrease the lightness of the endpoints:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "89e3bcb1-a17c-4465-830f-46043cb6c322",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.diverging_palette(280, 150, l=35)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4e42452a-a485-43e7-bbc3-338db58e4637",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e19f523f-c2f7-489a-ba00-326810e31a67",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/ecdfplot.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot a univariate distribution along the x axis:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns; sns.set_theme()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "penguins = sns.load_dataset(\"penguins\")\n",
    "sns.ecdfplot(data=penguins, x=\"flipper_length_mm\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Flip the plot by assigning the data variable to the y axis:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.ecdfplot(data=penguins, y=\"flipper_length_mm\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If neither `x` nor `y` is assigned, the dataset is treated as wide-form, and a histogram is drawn for each numeric column:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.ecdfplot(data=penguins.filter(like=\"bill_\", axis=\"columns\"))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can also draw multiple histograms from a long-form dataset with hue mapping:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.ecdfplot(data=penguins, x=\"bill_length_mm\", hue=\"species\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The default distribution statistic is normalized to show a proportion, but you can show absolute counts or percents instead:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.ecdfplot(data=penguins, x=\"bill_length_mm\", hue=\"species\", stat=\"count\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It's also possible to plot the empirical complementary CDF (1 - CDF):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.ecdfplot(data=penguins, x=\"bill_length_mm\", hue=\"species\", complementary=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}


================================================
FILE: doc/_docstrings/heatmap.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "987b9549-532e-4091-a6cf-007d1b23e825",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme()"
   ]
  },
  {
   "cell_type": "raw",
   "id": "2c78ca60-e232-44f6-956b-b86b472b1c28",
   "metadata": {},
   "source": [
    "Pass a :class:`DataFrame` to plot with indices as row/column labels:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fad17798-c2e3-4334-abf0-0d46153971fa",
   "metadata": {},
   "outputs": [],
   "source": [
    "glue = sns.load_dataset(\"glue\").pivot(index=\"Model\", columns=\"Task\", values=\"Score\")\n",
    "sns.heatmap(glue)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "f3255c5f-2477-4d13-b4c2-7e56380e9cc2",
   "metadata": {},
   "source": [
    "Use `annot` to represent the cell values with text:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3c9f3c73-c8bc-426e-bc67-dec8f807082e",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.heatmap(glue, annot=True)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "bc412da8-866a-49b7-8496-01fbf06dd908",
   "metadata": {},
   "source": [
    "Control the annotations with a formatting string:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ac952d0d-9187-4dff-a560-88430076851a",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.heatmap(glue, annot=True, fmt=\".1f\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "5eb12725-e9ee-4df0-9708-243d7e0a77b5",
   "metadata": {},
   "source": [
    "Use a separate dataframe for the annotations:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1189a37f-9f74-455a-a09a-c22e056d8ba7",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.heatmap(glue, annot=glue.rank(axis=\"columns\"))"
   ]
  },
  {
   "cell_type": "raw",
   "id": "253dfb7f-aa12-4716-adc2-3a38b003b2c3",
   "metadata": {},
   "source": [
    "Add lines between cells:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5cac673e-9b86-490b-9e67-ec0cf865bede",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.heatmap(glue, annot=True, linewidth=.5)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "b7d3659c-f996-4af3-a612-430d97799c72",
   "metadata": {},
   "source": [
    "Select a different colormap by name:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "86806d72-e784-430e-8320-48f2c91115bb",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.heatmap(glue, cmap=\"crest\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "8336fd53-3841-458f-b26c-411efff54d45",
   "metadata": {},
   "source": [
    "Or pass a colormap object:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9944ff33-991f-4138-a951-e3015c0326f1",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.heatmap(glue, cmap=sns.cubehelix_palette(as_cmap=True))"
   ]
  },
  {
   "cell_type": "raw",
   "id": "52cc4dba-b86a-4da8-9cbd-3f8aa06b43b4",
   "metadata": {},
   "source": [
    "Set the colormap norm (data values corresponding to minimum and maximum points):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b4ddb41e-c075-41a5-8afe-422ad6d105bf",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.heatmap(glue, vmin=50, vmax=100)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "6e828517-a532-49b1-be11-eda47c50cc37",
   "metadata": {},
   "source": [
    "Use methods on the :class:`matplotlib.axes.Axes` object to tweak the plot:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1aab26fc-2de4-4d4f-ad08-487809573deb",
   "metadata": {},
   "outputs": [],
   "source": [
    "ax = sns.heatmap(glue, annot=True)\n",
    "ax.set(xlabel=\"\", ylabel=\"\")\n",
    "ax.xaxis.tick_top()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/histplot.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme(style=\"white\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Assign a variable to ``x`` to plot a univariate distribution along the x axis:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "penguins = sns.load_dataset(\"penguins\")\n",
    "sns.histplot(data=penguins, x=\"flipper_length_mm\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Flip the plot by assigning the data variable to the y axis:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(data=penguins, y=\"flipper_length_mm\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Check how well the histogram represents the data by specifying a different bin width:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(data=penguins, x=\"flipper_length_mm\", binwidth=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can also define the total number of bins to use:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(data=penguins, x=\"flipper_length_mm\", bins=30)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Add a kernel density estimate to smooth the histogram, providing complementary information about the shape of the distribution:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(data=penguins, x=\"flipper_length_mm\", kde=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If neither `x` nor `y` is assigned, the dataset is treated as wide-form, and a histogram is drawn for each numeric column:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(data=penguins)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can otherwise draw multiple histograms from a long-form dataset with hue mapping:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(data=penguins, x=\"flipper_length_mm\", hue=\"species\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The default approach to plotting multiple distributions is to \"layer\" them, but you can also \"stack\" them:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(data=penguins, x=\"flipper_length_mm\", hue=\"species\", multiple=\"stack\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Overlapping bars can be hard to visually resolve. A different approach would be to draw a step function:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(penguins, x=\"flipper_length_mm\", hue=\"species\", element=\"step\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can move even farther away from bars by drawing a polygon with vertices in the center of each bin. This may make it easier to see the shape of the distribution, but use with caution: it will be less obvious to your audience that they are looking at a histogram:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(penguins, x=\"flipper_length_mm\", hue=\"species\", element=\"poly\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To compare the distribution of subsets that differ substantially in size, use independent density normalization:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(\n",
    "    penguins, x=\"bill_length_mm\", hue=\"island\", element=\"step\",\n",
    "    stat=\"density\", common_norm=False,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It's also possible to normalize so that each bar's height shows a probability, proportion, or percent, which make more sense for discrete variables:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "tips = sns.load_dataset(\"tips\")\n",
    "sns.histplot(data=tips, x=\"size\", stat=\"percent\", discrete=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can even draw a histogram over categorical variables (although this is an experimental feature):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(data=tips, x=\"day\", shrink=.8)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "When using a ``hue`` semantic with discrete data, it can make sense to \"dodge\" the levels:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(data=tips, x=\"day\", hue=\"sex\", multiple=\"dodge\", shrink=.8)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Real-world data is often skewed. For heavily skewed distributions, it's better to define the bins in log space. Compare:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "planets = sns.load_dataset(\"planets\")\n",
    "sns.histplot(data=planets, x=\"distance\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To the log-scale version:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(data=planets, x=\"distance\", log_scale=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There are also a number of options for how the histogram appears. You can show unfilled bars:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(data=planets, x=\"distance\", log_scale=True, fill=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Or an unfilled step function:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(data=planets, x=\"distance\", log_scale=True, element=\"step\", fill=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Step functions, especially when unfilled, make it easy to compare cumulative histograms:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(\n",
    "    data=planets, x=\"distance\", hue=\"method\",\n",
    "    hue_order=[\"Radial Velocity\", \"Transit\"],\n",
    "    log_scale=True, element=\"step\", fill=False,\n",
    "    cumulative=True, stat=\"density\", common_norm=False,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "When both ``x`` and ``y`` are assigned, a bivariate histogram is computed and shown as a heatmap:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(penguins, x=\"bill_depth_mm\", y=\"body_mass_g\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It's possible to assign a ``hue`` variable too, although this will not work well if data from the different levels have substantial overlap:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(penguins, x=\"bill_depth_mm\", y=\"body_mass_g\", hue=\"species\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Multiple color maps can make sense when one of the variables is discrete:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(\n",
    "    penguins, x=\"bill_depth_mm\", y=\"species\", hue=\"species\", legend=False\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The bivariate histogram accepts all of the same options for computation as its univariate counterpart, using tuples to parametrize ``x`` and ``y`` independently:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(\n",
    "    planets, x=\"year\", y=\"distance\",\n",
    "    bins=30, discrete=(True, False), log_scale=(False, True),\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The default behavior makes cells with no observations transparent, although this can be disabled: "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(\n",
    "    planets, x=\"year\", y=\"distance\",\n",
    "    bins=30, discrete=(True, False), log_scale=(False, True),\n",
    "    thresh=None,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It's also possible to set the threshold and colormap saturation point in terms of the proportion of cumulative counts:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(\n",
    "    planets, x=\"year\", y=\"distance\",\n",
    "    bins=30, discrete=(True, False), log_scale=(False, True),\n",
    "    pthresh=.05, pmax=.9,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To annotate the colormap, add a colorbar:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.histplot(\n",
    "    planets, x=\"year\", y=\"distance\",\n",
    "    bins=30, discrete=(True, False), log_scale=(False, True),\n",
    "    cbar=True, cbar_kws=dict(shrink=.75),\n",
    ")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}


================================================
FILE: doc/_docstrings/hls_palette.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "158cd1cf-6b30-4054-b32f-a166fcb883be",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme()\n",
    "sns.palettes._patch_colormap_display()"
   ]
  },
  {
   "cell_type": "raw",
   "id": "c81b86cb-fb4e-418b-8d2f-6cd10601ac5a",
   "metadata": {},
   "source": [
    "By default, return 6 colors with identical lightness and saturation and evenly-sampled hues:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6c3eaeaf-88eb-4012-96ea-41b328fa98b9",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.hls_palette()"
   ]
  },
  {
   "cell_type": "raw",
   "id": "f7624b0b-2311-45de-b6a5-fc07132ce455",
   "metadata": {},
   "source": [
    "Increase the number of colors:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "555c29d1-6972-4a19-ad32-957fb7545634",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.hls_palette(8)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "24713fa6-e485-4358-9ffc-d40bd9543caa",
   "metadata": {},
   "source": [
    "Decrease the lightness:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b6f80b4c-f7b4-4deb-a119-cdf6cfe1f7b5",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.hls_palette(l=.3)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "e521b514-5572-43e8-95ae-a20cc30169b8",
   "metadata": {},
   "source": [
    "Decrease the saturation:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f88bd038-0c9c-48b1-92b0-d272a9c199f4",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.hls_palette(s=.3)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "92a2212c-2177-4c82-8a5e-9dd788e9f87c",
   "metadata": {},
   "source": [
    "Change the start-point for hue sampling:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f8da8fbc-551c-4896-b1b8-04203e740d78",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.hls_palette(h=.5)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "87780608-1f5a-409f-b31f-6a31a599f122",
   "metadata": {},
   "source": [
    "Return a continuous colormap. Notice the perceptual discontinuities, especially around yellow, cyan, and magenta: "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4c622b3b-70d7-4139-8389-f3d0d4addd66",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.hls_palette(as_cmap=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3a83c1de-88c5-4327-abd2-19e8f3642052",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/husl_palette.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a6794650-f28f-40eb-95a7-3f0e5c4b332d",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme()\n",
    "sns.palettes._patch_colormap_display()"
   ]
  },
  {
   "cell_type": "raw",
   "id": "fab2f86e-45d4-4982-ade7-0a5ea6d762d1",
   "metadata": {},
   "source": [
    "By default, return 6 colors with identical lightness and saturation and evenly-sampled hues:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b220950e-0ca2-4101-b56a-14eebe8ee8d0",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.husl_palette()"
   ]
  },
  {
   "cell_type": "raw",
   "id": "c5e4a2e3-e6b8-42bf-be19-348ff7ae2798",
   "metadata": {},
   "source": [
    "Increase the number of colors:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7d0af740-cfca-49fb-a472-1daa4ccb3f3a",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.husl_palette(8)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "1a7189f2-2a26-446a-90e7-cf41dcac4f25",
   "metadata": {},
   "source": [
    "Decrease the lightness:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "43af79c7-f497-41e5-874a-83eed99500f3",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.husl_palette(l=.4)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "6d4099b7-5115-4365-b120-33a345581f5d",
   "metadata": {},
   "source": [
    "Decrease the saturation:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "52c1afc7-d982-4199-b218-222aa94563c5",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.husl_palette(s=.4)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "d26131ac-0d11-48c5-88b1-4e5cf9383000",
   "metadata": {},
   "source": [
    "Change the start-point for hue sampling:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d72f06a0-13e0-47f7-bc70-4c5935eaa130",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.husl_palette(h=.5)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "7e6c3c19-41d3-4315-b03e-909d201d0e76",
   "metadata": {},
   "source": [
    "Return a continuous colormap:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "49c18838-0589-496f-9a61-635195c07f61",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.husl_palette(as_cmap=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c710a557-8e84-44cb-ab4c-baabcc4fd328",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/jointplot.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme(style=\"white\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "In the simplest invocation, assign ``x`` and ``y`` to create a scatterplot (using :func:`scatterplot`) with marginal histograms (using :func:`histplot`):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "penguins = sns.load_dataset(\"penguins\")\n",
    "sns.jointplot(data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Assigning a ``hue`` variable will add conditional colors to the scatterplot and draw separate density curves (using :func:`kdeplot`) on the marginal axes:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.jointplot(data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\", hue=\"species\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Several different approaches to plotting are available through the ``kind`` parameter. Setting ``kind=\"kde\"`` will draw both bivariate and univariate KDEs:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.jointplot(data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\", hue=\"species\", kind=\"kde\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Set ``kind=\"reg\"`` to add a linear regression fit (using :func:`regplot`) and univariate KDE curves:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.jointplot(data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\", kind=\"reg\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "There are also two options for bin-based visualization of the joint distribution. The first, with ``kind=\"hist\"``, uses :func:`histplot` on all of the axes:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.jointplot(data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\", kind=\"hist\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Alternatively, setting ``kind=\"hex\"`` will use :meth:`matplotlib.axes.Axes.hexbin` to compute a bivariate histogram using hexagonal bins:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.jointplot(data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\", kind=\"hex\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Additional keyword arguments can be passed down to the underlying plots:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.jointplot(\n",
    "    data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\",\n",
    "    marker=\"+\", s=100, marginal_kws=dict(bins=25, fill=False),\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Use :class:`JointGrid` parameters to control the size and layout of the figure:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.jointplot(data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\", height=5, ratio=2, marginal_ticks=True)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "To add more layers onto the plot, use the methods on the :class:`JointGrid` object that :func:`jointplot` returns:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.jointplot(data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\")\n",
    "g.plot_joint(sns.kdeplot, color=\"r\", zorder=0, levels=6)\n",
    "g.plot_marginals(sns.rugplot, color=\"r\", height=-.15, clip_on=False)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}


================================================
FILE: doc/_docstrings/kdeplot.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns; sns.set_theme()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot a univariate distribution along the x axis:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "tips = sns.load_dataset(\"tips\")\n",
    "sns.kdeplot(data=tips, x=\"total_bill\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Flip the plot by assigning the data variable to the y axis:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.kdeplot(data=tips, y=\"total_bill\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot distributions for each column of a wide-form dataset:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "iris = sns.load_dataset(\"iris\")\n",
    "sns.kdeplot(data=iris)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Use less smoothing:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.kdeplot(data=tips, x=\"total_bill\", bw_adjust=.2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Use more smoothing, but don't smooth past the extreme data points:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "ax= sns.kdeplot(data=tips, x=\"total_bill\", bw_adjust=5, cut=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot conditional distributions with hue mapping of a second variable:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.kdeplot(data=tips, x=\"total_bill\", hue=\"time\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\"Stack\" the conditional distributions:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.kdeplot(data=tips, x=\"total_bill\", hue=\"time\", multiple=\"stack\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Normalize the stacked distribution at each value in the grid:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.kdeplot(data=tips, x=\"total_bill\", hue=\"time\", multiple=\"fill\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Estimate the cumulative distribution function(s), normalizing each subset:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.kdeplot(\n",
    "    data=tips, x=\"total_bill\", hue=\"time\",\n",
    "    cumulative=True, common_norm=False, common_grid=True,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Estimate distribution from aggregated data, using weights:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "tips_agg = (tips\n",
    "    .groupby(\"size\")\n",
    "    .agg(total_bill=(\"total_bill\", \"mean\"), n=(\"total_bill\", \"count\"))\n",
    ")\n",
    "sns.kdeplot(data=tips_agg, x=\"total_bill\", weights=\"n\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Map the data variable with log scaling:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "diamonds = sns.load_dataset(\"diamonds\")\n",
    "sns.kdeplot(data=diamonds, x=\"price\", log_scale=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Use numeric hue mapping:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.kdeplot(data=tips, x=\"total_bill\", hue=\"size\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Modify the appearance of the plot:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.kdeplot(\n",
    "   data=tips, x=\"total_bill\", hue=\"size\",\n",
    "   fill=True, common_norm=False, palette=\"crest\",\n",
    "   alpha=.5, linewidth=0,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot a bivariate distribution:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "geyser = sns.load_dataset(\"geyser\")\n",
    "sns.kdeplot(data=geyser, x=\"waiting\", y=\"duration\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Map a third variable with a hue semantic to show conditional distributions:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.kdeplot(data=geyser, x=\"waiting\", y=\"duration\", hue=\"kind\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Show filled contours:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.kdeplot(\n",
    "    data=geyser, x=\"waiting\", y=\"duration\", hue=\"kind\", fill=True,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Show fewer contour levels, covering less of the distribution:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.kdeplot(\n",
    "    data=geyser, x=\"waiting\", y=\"duration\", hue=\"kind\",\n",
    "    levels=5, thresh=.2,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Fill the axes extent with a smooth distribution, using a different colormap:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.kdeplot(\n",
    "    data=geyser, x=\"waiting\", y=\"duration\",\n",
    "    fill=True, thresh=0, levels=100, cmap=\"mako\",\n",
    ")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}


================================================
FILE: doc/_docstrings/light_palette.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5cd1cbb8-ba1a-460b-8e3a-bc285867f1d1",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme()\n",
    "sns.palettes._patch_colormap_display()"
   ]
  },
  {
   "cell_type": "raw",
   "id": "b157eb25-015f-4dd6-9785-83ba19cf4f94",
   "metadata": {},
   "source": [
    "Define a sequential ramp from a light gray to a specified color:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "851a4742-6276-4383-b17e-480beb896877",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.light_palette(\"seagreen\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "50053b26-112a-4378-8ef0-9be0fb565ec7",
   "metadata": {},
   "source": [
    "Specify the color with a hex code:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "74ae0d17-f65b-4bcf-ae66-d97d46964d5c",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.light_palette(\"#79C\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "eea376a2-fdf5-40e4-a187-3a28af529072",
   "metadata": {},
   "source": [
    "Specify the color from the husl system:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "66e451ee-869a-41ea-8dc5-4240b11e7be5",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.light_palette((20, 60, 50), input=\"husl\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "e4f44dcd-cf49-4920-ac05-b4db67870363",
   "metadata": {},
   "source": [
    "Increase the number of colors:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "75985f07-de92-4d8b-89d5-caf445b9375e",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.light_palette(\"xkcd:copper\", 8)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "34687ae8-fd6d-427a-a639-208f19e61122",
   "metadata": {},
   "source": [
    "Return a continuous colormap rather than a discrete palette:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2c342db4-7f97-40f5-934e-9a82201890d1",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.light_palette(\"#a275ac\", as_cmap=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e7ebe64b-25fa-4c52-9ebe-fdcbba0ee51e",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/lineplot.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "sns.set_theme()"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "The ``flights`` dataset has 10 years of monthly airline passenger data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "flights = sns.load_dataset(\"flights\")\n",
    "flights.head()"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "To draw a line plot using long-form data, assign the ``x`` and ``y`` variables:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "may_flights = flights.query(\"month == 'May'\")\n",
    "sns.lineplot(data=may_flights, x=\"year\", y=\"passengers\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Pivot the dataframe to a wide-form representation:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "flights_wide = flights.pivot(index=\"year\", columns=\"month\", values=\"passengers\")\n",
    "flights_wide.head()"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "To plot a single vector, pass it to ``data``. If the vector is a :class:`pandas.Series`, it will be plotted against its index:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lineplot(data=flights_wide[\"May\"])"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Passing the entire wide-form dataset to ``data`` plots a separate line for each column:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lineplot(data=flights_wide)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Passing the entire dataset in long-form mode will aggregate over repeated values (each year) to show the mean and 95% confidence interval:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lineplot(data=flights, x=\"year\", y=\"passengers\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Assign a grouping semantic (``hue``, ``size``, or ``style``) to plot separate lines"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lineplot(data=flights, x=\"year\", y=\"passengers\", hue=\"month\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "The same column can be assigned to multiple semantic variables, which can increase the accessibility of the plot:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lineplot(data=flights, x=\"year\", y=\"passengers\", hue=\"month\", style=\"month\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Use the `orient` parameter to aggregate and sort along the vertical dimension of the plot:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lineplot(data=flights, x=\"passengers\", y=\"year\", orient=\"y\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Each semantic variable can also represent a different column. For that, we'll need a more complex dataset:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "fmri = sns.load_dataset(\"fmri\")\n",
    "fmri.head()"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Repeated observations are aggregated even when semantic grouping is used:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lineplot(data=fmri, x=\"timepoint\", y=\"signal\", hue=\"event\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Assign both ``hue`` and ``style`` to represent two different grouping variables:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lineplot(data=fmri, x=\"timepoint\", y=\"signal\", hue=\"region\", style=\"event\")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "When assigning a ``style`` variable, markers can be used instead of (or along with) dashes to distinguish the groups:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lineplot(\n",
    "    data=fmri,\n",
    "    x=\"timepoint\", y=\"signal\", hue=\"event\", style=\"event\",\n",
    "    markers=True, dashes=False\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Show error bars instead of error bands and extend them to two standard error widths:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lineplot(\n",
    "    data=fmri, x=\"timepoint\", y=\"signal\", hue=\"event\", err_style=\"bars\", errorbar=(\"se\", 2),\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Assigning the ``units`` variable will plot multiple lines without applying a semantic mapping:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lineplot(\n",
    "    data=fmri.query(\"region == 'frontal'\"),\n",
    "    x=\"timepoint\", y=\"signal\", hue=\"event\", units=\"subject\",\n",
    "    estimator=None, lw=1,\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Load another dataset with a numeric grouping variable:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "dots = sns.load_dataset(\"dots\").query(\"align == 'dots'\")\n",
    "dots.head()"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Assigning a numeric variable to ``hue`` maps it differently, using a different default palette and a quantitative color mapping:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lineplot(\n",
    "    data=dots, x=\"time\", y=\"firing_rate\", hue=\"coherence\", style=\"choice\",\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Control the color mapping by setting the ``palette`` and passing a :class:`matplotlib.colors.Normalize` object:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lineplot(\n",
    "    data=dots.query(\"coherence > 0\"),\n",
    "    x=\"time\", y=\"firing_rate\", hue=\"coherence\", style=\"choice\",\n",
    "     palette=\"flare\", hue_norm=mpl.colors.LogNorm(),\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Or pass specific colors, either as a Python list or dictionary:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "palette = sns.color_palette(\"mako_r\", 6)\n",
    "sns.lineplot(\n",
    "    data=dots, x=\"time\", y=\"firing_rate\",\n",
    "    hue=\"coherence\", style=\"choice\",\n",
    "    palette=palette\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Assign the ``size`` semantic to map the width of the lines with a numeric variable:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lineplot(\n",
    "    data=dots, x=\"time\", y=\"firing_rate\",\n",
    "    size=\"coherence\", hue=\"choice\",\n",
    "    legend=\"full\"\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Pass a a tuple, ``sizes=(smallest, largest)``, to control the range of linewidths used to map the ``size`` semantic:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lineplot(\n",
    "    data=dots, x=\"time\", y=\"firing_rate\",\n",
    "    size=\"coherence\", hue=\"choice\",\n",
    "    sizes=(.25, 2.5)\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "By default, the observations are sorted by ``x``. Disable this to plot a line with the order that observations appear in the dataset:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "x, y = np.random.normal(size=(2, 5000)).cumsum(axis=1)\n",
    "sns.lineplot(x=x, y=y, sort=False, lw=1)"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Use :func:`relplot` to combine :func:`lineplot` and :class:`FacetGrid`. This allows grouping within additional categorical variables. Using :func:`relplot` is safer than using :class:`FacetGrid` directly, as it ensures synchronization of the semantic mappings across facets:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.relplot(\n",
    "    data=fmri, x=\"timepoint\", y=\"signal\",\n",
    "    col=\"region\", hue=\"event\", style=\"event\",\n",
    "    kind=\"line\"\n",
    ")"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "8bdfc9d9da1e36addfcfc8a3409187c45d33387af0f87d0d91e99e8d6403f1c3"
  },
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}


================================================
FILE: doc/_docstrings/lmplot.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "raw",
   "id": "034a9a5b-91ff-4ccc-932d-0f314e2cd6d2",
   "metadata": {},
   "source": [
    "See the :func:`regplot` docs for demonstrations of various options for specifying the regression model, which are also accepted here."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "76c91243-3bd8-49a1-b8c8-b7272f09a3f1",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme(style=\"ticks\")\n",
    "penguins = sns.load_dataset(\"penguins\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "0ba9f55d-17ea-4084-a74f-852d51771380",
   "metadata": {},
   "source": [
    "Plot a regression fit over a scatter plot:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2f789265-93c0-4867-b666-798713e4e7e5",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lmplot(data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "7e4b0ad4-446c-4109-9393-961f76132e34",
   "metadata": {},
   "source": [
    "Condition the regression fit on another variable and represent it using color:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "61347189-34e5-42ea-b77b-4acdef843326",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lmplot(data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\", hue=\"species\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "c9b6d059-49dc-46a7-869b-86baa3a7ed65",
   "metadata": {},
   "source": [
    "Condition the regression fit on another variable and split across subplots:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d8ec2955-ccc9-493c-b9ec-c78648ce9f53",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lmplot(\n",
    "    data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\",\n",
    "    hue=\"species\", col=\"sex\", height=4,\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "de01dee1-b2ce-445c-8d0d-d054ca0dfedb",
   "metadata": {},
   "source": [
    "Condition across two variables using both columns and rows:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6f1264aa-829c-416a-805a-b989e5f11a17",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lmplot(\n",
    "    data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\",\n",
    "    col=\"species\", row=\"sex\", height=3,\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "b3888f04-b22f-4205-8acc-24ce5b59568e",
   "metadata": {},
   "source": [
    "Allow axis limits to vary across subplots:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "67ed5af1-d228-4b81-b4f8-21937c513a10",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.lmplot(\n",
    "    data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\",\n",
    "    col=\"species\", row=\"sex\", height=3,\n",
    "    facet_kws=dict(sharex=False, sharey=False),\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "46e9cf18-c847-4c40-8e38-6c20cdde2be5",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/move_legend.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8ec46ad8-bc4c-4ee0-9626-271088c702f9",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme()\n",
    "penguins = sns.load_dataset(\"penguins\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "008bdd98-88cb-4a81-9f50-9b0e5a357305",
   "metadata": {},
   "source": [
    "For axes-level functions, pass the :class:`matplotlib.axes.Axes` object and provide a new location."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b82e58f9-b15d-4554-bee5-de6a689344a6",
   "metadata": {},
   "outputs": [],
   "source": [
    "ax = sns.histplot(penguins, x=\"bill_length_mm\", hue=\"species\")\n",
    "sns.move_legend(ax, \"center right\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "4f2a7f5d-ab39-46c7-87f4-532e607adf0b",
   "metadata": {},
   "source": [
    "Use the `bbox_to_anchor` parameter for more fine-grained control, including moving the legend outside of the axes:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ed610a98-447a-4459-8342-48abc80330f0",
   "metadata": {},
   "outputs": [],
   "source": [
    "ax = sns.histplot(penguins, x=\"bill_length_mm\", hue=\"species\")\n",
    "sns.move_legend(ax, \"upper left\", bbox_to_anchor=(1, 1))"
   ]
  },
  {
   "cell_type": "raw",
   "id": "9d2fd766-a806-45d9-949d-1572991cf512",
   "metadata": {},
   "source": [
    "Pass additional :meth:`matplotlib.axes.Axes.legend` parameters to update other properties:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5ad4342c-c46e-49e9-98a2-6c88c6fb4c54",
   "metadata": {},
   "outputs": [],
   "source": [
    "ax = sns.histplot(penguins, x=\"bill_length_mm\", hue=\"species\")\n",
    "sns.move_legend(\n",
    "    ax, \"lower center\",\n",
    "    bbox_to_anchor=(.5, 1), ncol=3, title=None, frameon=False,\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "0d573092-46fd-4a95-b7ed-7e6833823adc",
   "metadata": {},
   "source": [
    "It's also possible to move the legend created by a figure-level function. But when fine-tuning the position, you must bear in mind that the figure will have extra blank space on the right:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b258a9b8-69e5-4d4a-94cb-5b6baddc402b",
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.displot(\n",
    "    penguins,\n",
    "    x=\"bill_length_mm\", hue=\"species\",\n",
    "    col=\"island\", col_wrap=2, height=3,\n",
    ")\n",
    "sns.move_legend(g, \"upper left\", bbox_to_anchor=(.55, .45))"
   ]
  },
  {
   "cell_type": "raw",
   "id": "c9dc54e2-2c66-412f-ab2a-4f2bc2cb5782",
   "metadata": {},
   "source": [
    "One way to avoid this would be to set `legend_out=False` on the :class:`FacetGrid`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "06cff408-4cdf-47af-8def-176f3e70ec5a",
   "metadata": {},
   "outputs": [],
   "source": [
    "g = sns.displot(\n",
    "    penguins,\n",
    "    x=\"bill_length_mm\", hue=\"species\",\n",
    "    col=\"island\", col_wrap=2, height=3,\n",
    "    facet_kws=dict(legend_out=False),\n",
    ")\n",
    "sns.move_legend(g, \"upper left\", bbox_to_anchor=(.55, .45), frameon=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b170f20d-22a9-4f7d-917a-d09e10b1f08c",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/mpl_palette.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1d0d41d3-463c-4c6f-aa65-38131bdf3ddb",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn as sns\n",
    "sns.set_theme()\n",
    "sns.palettes._patch_colormap_display()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d2a0ae1e-a01e-49b3-a677-2b05a195990a",
   "metadata": {},
   "source": [
    "Return discrete samples from a continuous matplotlib colormap:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2b6a4ce9-6e4e-4b59-ada8-14ef8aef21d7",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.mpl_palette(\"viridis\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "0ccc47b1-c969-46e2-93bb-b9eb5a2e2141",
   "metadata": {},
   "source": [
    "Return the continuous colormap instead; note how the extreme values are more intense:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a8a1bc5d-1d62-45c6-a53b-9fadb58f11c0",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.mpl_palette(\"viridis\", as_cmap=True)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "ff0d1a3b-8641-40c0-bb4b-c22b83ec9432",
   "metadata": {},
   "source": [
    "Return more colors:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8faef1d8-a1eb-4060-be10-377342c9bd1d",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.mpl_palette(\"viridis\", 8)"
   ]
  },
  {
   "cell_type": "raw",
   "id": "612bf052-e888-411d-a2ea-6a742a78bc63",
   "metadata": {},
   "source": [
    "Return values from a qualitative colormap:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "74db95a8-4898-4f6c-a57d-c751af1dc7bf",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.mpl_palette(\"Set2\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "918494bf-1b8e-4b00-8950-1bd73032dee1",
   "metadata": {},
   "source": [
    "Notice how the palette will only contain distinct colors and can be shorter than requested:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d97efa25-9050-4e28-b758-da6f43c9f963",
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.mpl_palette(\"Set2\", 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f64ad118-e213-43cc-a714-98ed13cc3824",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/objects.Agg.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0d053943-66c9-410d-ad65-ce91f1c1ff48",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn.objects as so\n",
    "from seaborn import load_dataset\n",
    "diamonds = load_dataset(\"diamonds\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "51b029af-b83b-4ae0-a6ff-f48bf9692518",
   "metadata": {},
   "source": [
    "The default behavior is to aggregate by taking a mean over each group:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "28451b4e-9f4e-4604-b2b9-6138c4f51436",
   "metadata": {},
   "outputs": [],
   "source": [
    "p = so.Plot(diamonds, \"clarity\", \"carat\")\n",
    "p.add(so.Bar(), so.Agg())"
   ]
  },
  {
   "cell_type": "raw",
   "id": "53859a3b-051c-423d-97ef-b03f647268b7",
   "metadata": {},
   "source": [
    "Other aggregation functions can be selected by name if they are pandas methods:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5beaac3a-b9f7-4acc-81c7-480599e3675e",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Bar(), so.Agg(\"median\"))"
   ]
  },
  {
   "cell_type": "raw",
   "id": "2d318ee3-56c1-4fd4-99a5-fa87db770f67",
   "metadata": {},
   "source": [
    "It's also possible to pass an arbitrary aggregation function:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bd11e289-7274-464a-b781-06fb756cf8de",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Bar(), so.Agg(lambda x: x.quantile(.75) - x.quantile(.25)))"
   ]
  },
  {
   "cell_type": "raw",
   "id": "555394c1-25f8-4932-94d1-f67a8a9fa1c6",
   "metadata": {},
   "source": [
    "When other mapping variables are assigned, they'll be used to define aggregation groups. With some marks, it may be helpful to use additional transforms, such as :class:`Dodge`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5755cdeb-1d1a-4434-9cc5-91024735eb4e",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Bar(), so.Agg(), so.Dodge(), color=\"cut\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "07eb1150-db57-4a58-b830-8a7aba9f46ec",
   "metadata": {},
   "source": [
    "The variable that gets aggregated depends on the orientation of the layer, which is usually inferred from the coordinate variable types (but may also be specified with the `orient` parameter in :meth:`Plot.add`):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1bdcc970-1b6c-4a3d-b0bc-6c7a625163ff",
   "metadata": {},
   "outputs": [],
   "source": [
    "so.Plot(diamonds, \"carat\", \"clarity\").add(so.Bar(), so.Agg())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ad8006ff-5472-4345-9537-a5680c519f4f",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/objects.Area.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2923956c-f141-4ecb-ab08-e819099f0fa9",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn.objects as so\n",
    "from seaborn import load_dataset\n",
    "healthexp = (\n",
    "    load_dataset(\"healthexp\")\n",
    "    .pivot(index=\"Year\", columns=\"Country\", values=\"Spending_USD\")\n",
    "    .interpolate()\n",
    "    .stack()\n",
    "    .rename(\"Spending_USD\")\n",
    "    .reset_index()\n",
    "    .sort_values(\"Country\")\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6d3bc7fe-0b0b-49eb-8f8b-ddd8c7441044",
   "metadata": {},
   "outputs": [],
   "source": [
    "p = so.Plot(healthexp, \"Year\", \"Spending_USD\").facet(\"Country\", wrap=3)\n",
    "p.add(so.Area())"
   ]
  },
  {
   "cell_type": "raw",
   "id": "3a47b7f1-31ef-4218-a1ea-c289f3c64ab5",
   "metadata": {},
   "source": [
    "The `color` property sets both the edge and fill color:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1697359a-bf26-49d0-891b-49c207cab82d",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Area(), color=\"Country\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "9bfaed37-7153-45d9-89e5-b348c7c14401",
   "metadata": {},
   "source": [
    "It's also possible to map only the `edgecolor`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "39e5c9e5-793e-450c-a5d2-e09d5ad1f854",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Area(color=\".5\", edgewidth=2), edgecolor=\"Country\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "0b1a5297-9e96-472d-b284-919048e41358",
   "metadata": {},
   "source": [
    "The mark is drawn as a polygon, but it can be combined with :class:`Line` to draw a shaded region by setting `edgewidth=0`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "42b65535-acf6-4634-84bd-6e35305e3018",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Area(edgewidth=0)).add(so.Line())"
   ]
  },
  {
   "cell_type": "raw",
   "id": "59761f97-eadb-4047-9e6b-09339545fe57",
   "metadata": {},
   "source": [
    "The layer's orientation defines the axis that the mark fills from:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a1c30f88-6287-486d-ae4b-fc272bc8e6ab",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Area(), x=\"Spending_USD\", y=\"Year\", orient=\"y\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "f1b893c5-6847-4e5b-9fc2-4190ddd75099",
   "metadata": {},
   "source": [
    "This mark can be stacked to show part-whole relationships:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "66a79e6e-3e7f-4f54-9394-f8b003a0e228",
   "metadata": {},
   "outputs": [],
   "source": [
    "(\n",
    "    so.Plot(healthexp, \"Year\", \"Spending_USD\", color=\"Country\")\n",
    "    .add(so.Area(alpha=.7), so.Stack())\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "69f4e423-94f4-4003-b337-12162d1040c2",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/objects.Band.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2923956c-f141-4ecb-ab08-e819099f0fa9",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn.objects as so\n",
    "from seaborn import load_dataset\n",
    "fmri = load_dataset(\"fmri\").query(\"region == 'parietal'\")\n",
    "seaice = (\n",
    "    load_dataset(\"seaice\")\n",
    "    .assign(\n",
    "        Day=lambda x: x[\"Date\"].dt.day_of_year,\n",
    "        Year=lambda x: x[\"Date\"].dt.year,\n",
    "    )\n",
    "    .query(\"Year >= 1980\")\n",
    "    .astype({\"Year\": str})\n",
    "    .pivot(index=\"Day\", columns=\"Year\", values=\"Extent\")\n",
    "    .filter([\"1980\", \"2019\"])\n",
    "    .dropna()\n",
    "    .reset_index()\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "e840e876-fbd6-4bfd-868c-a9d7af7913fa",
   "metadata": {},
   "source": [
    "The mark fills between pairs of data points to show an interval on the value axis:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "518cf20d-bb0b-433a-9b25-f1ed8d432149",
   "metadata": {},
   "outputs": [],
   "source": [
    "p = so.Plot(seaice, x=\"Day\", ymin=\"1980\", ymax=\"2019\")\n",
    "p.add(so.Band())"
   ]
  },
  {
   "cell_type": "raw",
   "id": "fa50b778-13f9-4368-a967-68365fd51117",
   "metadata": {},
   "source": [
    "By default it draws a faint ribbon with no edges, but edges can be added:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a05176c4-0615-49ca-a2df-48ced8b5a8a8",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Band(alpha=.5, edgewidth=2))"
   ]
  },
  {
   "cell_type": "raw",
   "id": "776d192a-f35f-4253-be7f-01e4b2466dad",
   "metadata": {},
   "source": [
    "The defaults are optimized for the main expected usecase, where the mark is combined with a line to show an errorbar interval:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "69f4e423-94f4-4003-b337-12162d1040c2",
   "metadata": {},
   "outputs": [],
   "source": [
    "(\n",
    "    so.Plot(fmri, x=\"timepoint\", y=\"signal\", color=\"event\")\n",
    "    .add(so.Band(), so.Est())\n",
    "    .add(so.Line(), so.Agg())\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "9f0c82bf-3457-4ac5-ba48-8930bac03d75",
   "metadata": {},
   "source": [
    "When min/max values are not explicitly assigned or added in a transform, the band will cover the full extent of the data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "309f578e-da3d-4dc5-b6ac-a354321334c8",
   "metadata": {},
   "outputs": [],
   "source": [
    "(\n",
    "    so.Plot(fmri, x=\"timepoint\", y=\"signal\", color=\"event\")\n",
    "    .add(so.Line(linewidth=.5), group=\"subject\")\n",
    "    .add(so.Band())\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4330a3cd-63fe-470a-8e83-09e9606643b5",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/objects.Bar.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2923956c-f141-4ecb-ab08-e819099f0fa9",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn.objects as so\n",
    "from seaborn import load_dataset\n",
    "penguins = load_dataset(\"penguins\")\n",
    "flights = load_dataset(\"flights\").query(\"year == 1960\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "4e817cdd-09a3-4cf6-8602-e9665607bfe1",
   "metadata": {},
   "source": [
    "The mark draws discrete bars from a baseline to provided values:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5a4e5ba1-50ce-4060-8eb7-f17fee9080c0",
   "metadata": {},
   "outputs": [],
   "source": [
    "so.Plot(flights[\"month\"], flights[\"passengers\"]).add(so.Bar())"
   ]
  },
  {
   "cell_type": "raw",
   "id": "252cf7b2-7fc8-4085-8174-0126743d8a08",
   "metadata": {},
   "source": [
    "The bars are oriented depending on the x/y variable types and the `orient` parameter:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "81dbbc81-178a-46dd-9acf-2c57d2a7e315",
   "metadata": {},
   "outputs": [],
   "source": [
    "so.Plot(flights[\"passengers\"], flights[\"month\"]).add(so.Bar())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6fddeceb-25b9-4fc1-bae0-4cc4cb612674",
   "metadata": {},
   "source": [
    "A common usecase will be drawing histograms on a variable with a nominal scale:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "08604543-c681-4cd3-943e-b57c0f863b2e",
   "metadata": {},
   "outputs": [],
   "source": [
    "so.Plot(penguins, x=\"species\").add(so.Bar(), so.Hist())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8b9af978-fdb0-46aa-9cf9-d3e49e38b344",
   "metadata": {},
   "source": [
    "When mapping additional variables, the bars will overlap by default:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "297f7fef-7c31-40dd-ac68-e0ce7f131528",
   "metadata": {},
   "outputs": [],
   "source": [
    "so.Plot(penguins, x=\"species\", color=\"sex\").add(so.Bar(), so.Hist())"
   ]
  },
  {
   "cell_type": "raw",
   "id": "cd9b7b4a-3150-42b5-b1a8-1c5950ca8703",
   "metadata": {},
   "source": [
    "Apply a move transform, such as a :class:`Dodge` or :class:`Stack` to resolve them:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a13c7594-737c-4215-b2a2-e59fc2d033c3",
   "metadata": {},
   "outputs": [],
   "source": [
    "so.Plot(penguins, x=\"species\", color=\"sex\").add(so.Bar(), so.Hist(), so.Dodge())"
   ]
  },
  {
   "cell_type": "raw",
   "id": "f5f44a6b-610a-4523-a7c2-39c804a60520",
   "metadata": {},
   "source": [
    "A number of properties can be mapped or set:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e5cbf5a9-effb-4550-bdaf-c266dc69d3f0",
   "metadata": {},
   "outputs": [],
   "source": [
    "(\n",
    "    so.Plot(\n",
    "        penguins, x=\"species\",\n",
    "        color=\"sex\", alpha=\"sex\", edgestyle=\"sex\",\n",
    "    )\n",
    "    .add(so.Bar(edgewidth=2), so.Hist(), so.Dodge(\"fill\"))\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "539144d9-75bc-4eb0-8fed-ca57b516b6d3",
   "metadata": {},
   "source": [
    "Combine with :class:`Range` to plot an estimate with errorbars:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "89233c4a-38e7-4807-b3b4-3b4540ffcf56",
   "metadata": {},
   "outputs": [],
   "source": [
    "(\n",
    "    so.Plot(penguins, \"body_mass_g\", \"species\", color=\"sex\")\n",
    "    .add(so.Bar(alpha=.5), so.Agg(), so.Dodge())\n",
    "    .add(so.Range(), so.Est(errorbar=\"sd\"), so.Dodge())\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4f6a97a0-2d92-4fd5-ad98-b4299bda1b6b",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/objects.Bars.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2923956c-f141-4ecb-ab08-e819099f0fa9",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn.objects as so\n",
    "from seaborn import load_dataset\n",
    "diamonds = load_dataset(\"diamonds\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "5cf83822-ceb1-4ce5-8364-069466f7aa40",
   "metadata": {},
   "source": [
    "This mark draws bars between a baseline and a value. In contrast to :class:`Bar`, the bars have a full width and thin edges by default; this makes this mark a better choice for a continuous histogram:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e9b99eaf-695f-41ae-9bd1-bfe406dedb63",
   "metadata": {},
   "outputs": [],
   "source": [
    "p = so.Plot(diamonds, \"price\").scale(x=\"log\")\n",
    "p.add(so.Bars(), so.Hist())"
   ]
  },
  {
   "cell_type": "raw",
   "id": "bc4c0f25-3f7a-4a2c-a032-151da47f5ea3",
   "metadata": {},
   "source": [
    "When mapping the color or other properties, bars will overlap by default; this is usually confusing:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7989211b-7a29-4763-bb97-4ea19cdef081",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Bars(), so.Hist(), color=\"cut\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "f16a3b5d-1ac1-4d9d-9bc6-d4cea7f83a17",
   "metadata": {},
   "source": [
    "Using a move transform, such as :class:`Stack` or :class:`Dodge`, will resolve the overlap (although faceting might often be a better approach):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8933f5f7-1423-4741-b7be-6239ea8b2fee",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Bars(), so.Hist(), so.Stack(), color=\"cut\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "74075e80-0361-4388-a459-cbfa6418df6c",
   "metadata": {},
   "source": [
    "A number of different properties can be set or mapped:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "04fada68-a61b-451c-b3bd-9aaab16b5f29",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Bars(edgewidth=0), so.Hist(), so.Stack(), alpha=\"clarity\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "a14d7d36-9d8b-4024-8653-002e9da946d7",
   "metadata": {},
   "source": [
    "It is possible to draw unfilled bars, but you must override the default edge color:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "21642f8c-99c7-4f61-b3f5-bc1dacc638c3",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Bars(fill=False, edgecolor=\"C0\", edgewidth=1.5), so.Hist())"
   ]
  },
  {
   "cell_type": "raw",
   "id": "dce5b6cc-0808-48ec-b4d6-0c0c2e5178d2",
   "metadata": {},
   "source": [
    "It is also possible to narrow the bars, which may be useful for dealing with overlap in some cases:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "166693bf-420c-4ec3-8da2-abc22724952b",
   "metadata": {},
   "outputs": [],
   "source": [
    "hist = so.Hist(binwidth=.075, binrange=(2, 5))\n",
    "(\n",
    "    p.add(so.Bars(), hist)\n",
    "    .add(\n",
    "        so.Bars(color=\".9\", width=.5), hist,\n",
    "        data=diamonds.query(\"cut == 'Ideal'\")\n",
    "    )\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b40b02c4-fb2c-4300-93e4-24ea28bc6ef8",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/objects.Count.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "89113d6b-70b9-4ebe-9910-10a80eab246e",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn.objects as so\n",
    "from seaborn import load_dataset\n",
    "tips = load_dataset(\"tips\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "daf6ff78-df24-4541-ba72-73fb9eddb50d",
   "metadata": {},
   "source": [
    "The transform counts distinct observations of the orientation variable defines a new variable on the opposite axis:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "390f2fd3-0596-40e3-b262-163b3a90d055",
   "metadata": {},
   "outputs": [],
   "source": [
    "so.Plot(tips, x=\"day\").add(so.Bar(), so.Count())"
   ]
  },
  {
   "cell_type": "raw",
   "id": "813fb4a5-db68-4b51-b236-5b5628ebba47",
   "metadata": {},
   "source": [
    "When additional mapping variables are defined, they are also used to define groups:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "76a4ae70-e914-4f54-b979-ce1b79374fc3",
   "metadata": {},
   "outputs": [],
   "source": [
    "so.Plot(tips, x=\"day\", color=\"sex\").add(so.Bar(), so.Count(), so.Dodge())"
   ]
  },
  {
   "cell_type": "raw",
   "id": "2973dee1-5aee-4768-846d-22d220faf170",
   "metadata": {},
   "source": [
    "Unlike :class:`Hist`, numeric data are not binned before counting:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6f94c5f0-680e-4d8a-a1c9-70876980dd1c",
   "metadata": {},
   "outputs": [],
   "source": [
    "so.Plot(tips, x=\"size\").add(so.Bar(), so.Count())"
   ]
  },
  {
   "cell_type": "raw",
   "id": "11acd5e6-f477-4eb1-b1d7-72f4582bca45",
   "metadata": {},
   "source": [
    "When the `y` variable is defined, the counts are assigned to the `x` variable:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "924e0e35-210f-4f65-83b4-4aebe41ad264",
   "metadata": {},
   "outputs": [],
   "source": [
    "so.Plot(tips, y=\"size\").add(so.Bar(), so.Count())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0229fa39-b6dc-48da-9a25-31e25ed34ebc",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/objects.Dash.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3227e585-7166-44e7-b0c2-8570e098102d",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn.objects as so\n",
    "from seaborn import load_dataset\n",
    "penguins = load_dataset(\"penguins\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "1b424322-eaa4-45c7-8007-a671ef2afbde",
   "metadata": {},
   "source": [
    "A line segment is drawn for each datapoint, centered on the value along the orientation axis:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fc835356-2dc2-4583-a9f9-c1fe0a6cc9ea",
   "metadata": {},
   "outputs": [],
   "source": [
    "p = so.Plot(penguins, \"species\", \"body_mass_g\", color=\"sex\")\n",
    "p.add(so.Dash())"
   ]
  },
  {
   "cell_type": "raw",
   "id": "ad9b94de-f19f-4e60-8275-686e749da39c",
   "metadata": {},
   "source": [
    "A number of properties can be mapped or set directly:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6070a665-ab19-43a6-9eba-e206193d9422",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Dash(alpha=.5), linewidth=\"flipper_length_mm\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "2c4a8291-0a84-4e70-a992-756850933791",
   "metadata": {},
   "source": [
    "The mark has a `width` property, which is relative to the spacing between orientation values:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "315327da-421e-46c8-8a1b-8b87355d0439",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Dash(width=.5))"
   ]
  },
  {
   "cell_type": "raw",
   "id": "224bf51a-b8d8-4d8e-b0ab-b63ec6788584",
   "metadata": {},
   "source": [
    "When dodged, the width will automatically adapt:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "227e889c-7ce7-49fc-b985-f7746393930e",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Dash(), so.Dodge())"
   ]
  },
  {
   "cell_type": "raw",
   "id": "aa807f57-5d37-4faa-8fd2-1e5378115f9f",
   "metadata": {},
   "source": [
    "This mark works well to show aggregate values when paired with a strip plot:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5141e0b8-ea1a-4178-adde-21b4bc2e705f",
   "metadata": {},
   "outputs": [],
   "source": [
    "(\n",
    "    p\n",
    "    .add(so.Dash(), so.Agg(), so.Dodge())\n",
    "    .add(so.Dots(), so.Dodge(), so.Jitter())\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "f2abd4b7-5afb-4661-95f3-b51bfa101273",
   "metadata": {},
   "source": [
    "When both coordinate variables are numeric, you can control the orientation explicitly:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f6d7e236-327f-460f-b12e-46d7444ac348",
   "metadata": {},
   "outputs": [],
   "source": [
    "(\n",
    "    so.Plot(\n",
    "        penguins[\"body_mass_g\"],\n",
    "        penguins[\"flipper_length_mm\"].round(-1),\n",
    "    )\n",
    "    .add(so.Dash(), orient=\"y\")\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6811d776-93e5-49ce-88a6-14786a67841d",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/objects.Dodge.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4d44a940-db84-4e16-bc83-e67d08d6d56a",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn.objects as so\n",
    "from seaborn import load_dataset\n",
    "tips = load_dataset(\"tips\").astype({\"time\": str})"
   ]
  },
  {
   "cell_type": "raw",
   "id": "ce99e1a1-c213-478f-a5bc-d19e2c4d70db",
   "metadata": {},
   "source": [
    "This transform modifies both the width and position (along the orientation axis) of marks that would otherwise overlap:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f6a84062-2c2b-4a45-91cb-77f29462104d",
   "metadata": {},
   "outputs": [],
   "source": [
    "(\n",
    "    so.Plot(tips, \"day\", color=\"time\")\n",
    "    .add(so.Bar(), so.Count(), so.Dodge())\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "55d3a9a8-c973-4e91-9f3a-bc137df15f48",
   "metadata": {},
   "source": [
    "By default, empty space may appear when variables are not fully crossed:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "08ae1c65-5ad9-47a3-a8f3-d901bd4821f2",
   "metadata": {},
   "outputs": [],
   "source": [
    "p = so.Plot(tips, \"day\", color=\"time\")\n",
    "p.add(so.Bar(), so.Count(), so.Dodge())"
   ]
  },
  {
   "cell_type": "raw",
   "id": "2125f07d-4210-4d49-8761-bcfa3f9c67f5",
   "metadata": {},
   "source": [
    "The `empty` parameter handles this case; use it to fill out the space:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c2314343-de73-45d7-9595-acf5f7d62e93",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Bar(), so.Count(), so.Dodge(empty=\"fill\"))"
   ]
  },
  {
   "cell_type": "raw",
   "id": "08f4382c-842e-4777-a452-1d88251da6e7",
   "metadata": {},
   "source": [
    "Or center the marks while using a consistent width:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1e0745e4-be11-4703-bf9c-4b13cbb76e91",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Bar(), so.Count(), so.Dodge(empty=\"drop\"))"
   ]
  },
  {
   "cell_type": "raw",
   "id": "7d29ec53-caef-4cff-9828-dc242adb5c49",
   "metadata": {},
   "source": [
    "Use `gap` to add a bit of spacing between dodged marks:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "342aca16-c67b-4bc4-9101-fec6c398aa0f",
   "metadata": {},
   "outputs": [],
   "source": [
    "p = so.Plot(tips, \"day\", \"total_bill\", color=\"sex\")\n",
    "p.add(so.Bar(), so.Agg(\"sum\"), so.Dodge(gap=.1))"
   ]
  },
  {
   "cell_type": "raw",
   "id": "68b52dcb-c5e7-4186-b61f-e96fac5f4d40",
   "metadata": {},
   "source": [
    "When multiple semantic variables are used, each distinct group will be dodged:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "497f3e3b-39bc-4381-85bb-be5bb5c60b1f",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Dot(), so.Dodge(), fill=\"smoker\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "795835d2-904f-4343-89c2-b91be9c1c504",
   "metadata": {},
   "source": [
    "Use `by` to dodge only a subset of variables:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "da01f6c0-c425-409c-a010-5cb52a794dc9",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Dot(), so.Dodge(by=[\"color\"]), fill=\"smoker\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "77de77da-2fad-4374-9d14-90520e448c90",
   "metadata": {},
   "source": [
    "When combining with other transforms (such as :class:`Jitter` or :class:`Stack`), be mindful of the order that they are applied in:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "29ccabd6-6bd5-4563-a337-f8f8d25f7dad",
   "metadata": {},
   "outputs": [],
   "source": [
    "p.add(so.Dot(), so.Dodge(), so.Jitter())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a73fe9a5-c717-41fd-874e-be72334ea6d4",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: doc/_docstrings/objects.Dot.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2923956c-f141-4ecb-ab08-e819099f0fa9",
   "metadata": {
    "tags": [
     "hide"
    ]
   },
   "outputs": [],
   "source": [
    "import seaborn.objects as so\n",
    "from seaborn import load_dataset\n",
    "tips = load_dataset(\"tips\")\n",
    "glue = load_dataset(\"glue\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "f8e7b343-0301-49b3-8d42-862266d322bb",
   "metadata": {},
   "source": [
    "This mark draws relatively large, filled dots by default:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f92e97d0-b6a5-41ec-8507-dc64e60cb6e0",
   "metadata": {},
   "outputs": [],
   "source": [
    "p1 = so.Plot(tips, \"total_bill\", \"tip\")\n",
    "p1.add(so.Dot())"
   ]
  },
  {
   "cell_type": "raw",
   "id": "625abe2a-7b0b-42a7-bfbc-dc2bfaf14897",
   "metadata": {},
   "source": [
    "While :class:`Dots` is a better choice for dense scatter plots, adding a thin edge can help to resolve individual points:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a3c7c22d-c7ce-40a9-941b-a8bc30db1e54",
   "metadata": {},
   "outputs": [],
   "source": [
    "p1.add(so.Dot(edgecolor=\"w\"))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "398a43e1-4d45-42ea-bc87-41a8602540a4",
   "metadata": {},
   "source": [
    "Dodging and jittering can also help to reduce overplotting, when appropriate:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1b15e393-35cf-457f-8180-d92d05e2675a",
   "metadata": {},
   "outputs": [],
   "source": [
    "(\n",
    "    so.Plot(tips, \"total_bill\", \"day\", color=\"sex\")\n",
    "    .add(so.Dot(), so.Dodge(), so.Jitter(.2))\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "12453ada-40e6-4aad-9f32-ba41fd7b27ca",
   "metadata": {},
   "source": [
    "The larger dot size makes this mark well suited to representing values along a nominal scale:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bd2edac0-ee6b-4cc9-8201-641b589630b8",
   "metadata": {},
   "outputs": [],
   "source": [
    "p2 = so.Plot(glue, \"Score\", \"Model\").facet(\"Task\", wrap=4).limit(x=(-5, 105))\n",
    "p2.add(so.Dot())"
   ]
  },
  {
   "cell_type": "raw",
   "id": "ddd86209-d5cd-4f7a-9274-c578bc6a9f07",
   "metadata": {},
   "source": [
    "A number of properties can be set or mapped:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d00cdc35-4b9c-4f32-a047-8e036e565c4f",
   "metadata": {},
   "outputs": [],
   "source": [
    "(\n",
    "    p2\n",
    "    .add(so.Dot(pointsize=6), color=\"Year\", marker=\"Encoder\")\n",
    "    .scale(marker=[\"o\", \"s\"], color=\"flare\")\n",
    ")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "061e22f4-8505-425d-8c80-8ac82c6a3125",
   "metadata": {},
   "source": [
    "Note that the edge properties are parameterized differently for filled and unfilled markers; use `stroke` and `color` rather than `edgewidth` and `edgecolor` if the marker is unfilled:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "964b00be-1c29-4664-838d-0daeead9154a",
   "metadata": {},
   "outputs": [],
   "source": [
    "p2.add(so.Dot(stroke=1.5), fill=\"Encoder\", color=\"Encoder\")"
   ]
  },
  {
   "cell_type": "raw",
   "id": "fb5e1383-1460-4389-a67b-09ec7965af90",
   "metadata": {},
   "source": [
    "Combine with :class:`Range` to show error bars:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b2618c22-bc7f-4ddd-9824-346e8d9b2b51",
   "metadata": {},
   "outputs": [],
   "source": [
    "(\n",
    "    so.Plot(tips, x=\"total_bill\", y=\"day\")\n",
    "    .add(so.Dot(pointsize=3), so.Shift(y=.2), so.Jitter(.2))\n",
    "    .add(so.Dot(), so.Agg())\n",
    "    .add(so.Range(), so.Est(errorbar=(\"se\", 2)))\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e5dc04fd-dba4-4b86-99a1-31ba00c7650d",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py310",
   "language": "python",
   "name": "py310"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython"
Download .txt
gitextract_2fyw04_k/

├── .github/
│   ├── CONTRIBUTING.md
│   ├── dependabot.yml
│   └── workflows/
│       └── ci.yaml
├── .gitignore
├── .pre-commit-config.yaml
├── CITATION.cff
├── LICENSE.md
├── Makefile
├── README.md
├── SECURITY.md
├── ci/
│   ├── cache_datasets.py
│   ├── check_gallery.py
│   ├── deps_pinned.txt
│   └── getmsfonts.sh
├── doc/
│   ├── .gitignore
│   ├── Makefile
│   ├── README.md
│   ├── _docstrings/
│   │   ├── FacetGrid.ipynb
│   │   ├── JointGrid.ipynb
│   │   ├── Makefile
│   │   ├── PairGrid.ipynb
│   │   ├── axes_style.ipynb
│   │   ├── barplot.ipynb
│   │   ├── blend_palette.ipynb
│   │   ├── boxenplot.ipynb
│   │   ├── boxplot.ipynb
│   │   ├── catplot.ipynb
│   │   ├── clustermap.ipynb
│   │   ├── color_palette.ipynb
│   │   ├── countplot.ipynb
│   │   ├── cubehelix_palette.ipynb
│   │   ├── dark_palette.ipynb
│   │   ├── displot.ipynb
│   │   ├── diverging_palette.ipynb
│   │   ├── ecdfplot.ipynb
│   │   ├── heatmap.ipynb
│   │   ├── histplot.ipynb
│   │   ├── hls_palette.ipynb
│   │   ├── husl_palette.ipynb
│   │   ├── jointplot.ipynb
│   │   ├── kdeplot.ipynb
│   │   ├── light_palette.ipynb
│   │   ├── lineplot.ipynb
│   │   ├── lmplot.ipynb
│   │   ├── move_legend.ipynb
│   │   ├── mpl_palette.ipynb
│   │   ├── objects.Agg.ipynb
│   │   ├── objects.Area.ipynb
│   │   ├── objects.Band.ipynb
│   │   ├── objects.Bar.ipynb
│   │   ├── objects.Bars.ipynb
│   │   ├── objects.Count.ipynb
│   │   ├── objects.Dash.ipynb
│   │   ├── objects.Dodge.ipynb
│   │   ├── objects.Dot.ipynb
│   │   ├── objects.Dots.ipynb
│   │   ├── objects.Est.ipynb
│   │   ├── objects.Hist.ipynb
│   │   ├── objects.Jitter.ipynb
│   │   ├── objects.KDE.ipynb
│   │   ├── objects.Line.ipynb
│   │   ├── objects.Lines.ipynb
│   │   ├── objects.Norm.ipynb
│   │   ├── objects.Path.ipynb
│   │   ├── objects.Paths.ipynb
│   │   ├── objects.Perc.ipynb
│   │   ├── objects.Plot.add.ipynb
│   │   ├── objects.Plot.config.ipynb
│   │   ├── objects.Plot.facet.ipynb
│   │   ├── objects.Plot.label.ipynb
│   │   ├── objects.Plot.layout.ipynb
│   │   ├── objects.Plot.limit.ipynb
│   │   ├── objects.Plot.on.ipynb
│   │   ├── objects.Plot.pair.ipynb
│   │   ├── objects.Plot.scale.ipynb
│   │   ├── objects.Plot.share.ipynb
│   │   ├── objects.Plot.theme.ipynb
│   │   ├── objects.Range.ipynb
│   │   ├── objects.Shift.ipynb
│   │   ├── objects.Stack.ipynb
│   │   ├── objects.Text.ipynb
│   │   ├── pairplot.ipynb
│   │   ├── plotting_context.ipynb
│   │   ├── pointplot.ipynb
│   │   ├── regplot.ipynb
│   │   ├── relplot.ipynb
│   │   ├── residplot.ipynb
│   │   ├── rugplot.ipynb
│   │   ├── scatterplot.ipynb
│   │   ├── set_context.ipynb
│   │   ├── set_style.ipynb
│   │   ├── set_theme.ipynb
│   │   ├── stripplot.ipynb
│   │   ├── swarmplot.ipynb
│   │   └── violinplot.ipynb
│   ├── _static/
│   │   ├── copybutton.js
│   │   └── css/
│   │       └── custom.css
│   ├── _templates/
│   │   ├── autosummary/
│   │   │   ├── base.rst
│   │   │   ├── class.rst
│   │   │   ├── object.rst
│   │   │   ├── plot.rst
│   │   │   └── scale.rst
│   │   ├── layout.html
│   │   └── version.html
│   ├── _tutorial/
│   │   ├── Makefile
│   │   ├── aesthetics.ipynb
│   │   ├── axis_grids.ipynb
│   │   ├── categorical.ipynb
│   │   ├── color_palettes.ipynb
│   │   ├── data_structure.ipynb
│   │   ├── distributions.ipynb
│   │   ├── error_bars.ipynb
│   │   ├── function_overview.ipynb
│   │   ├── introduction.ipynb
│   │   ├── objects_interface.ipynb
│   │   ├── properties.ipynb
│   │   ├── regression.ipynb
│   │   └── relational.ipynb
│   ├── api.rst
│   ├── citing.rst
│   ├── conf.py
│   ├── example_thumbs/
│   │   └── .gitkeep
│   ├── faq.rst
│   ├── index.rst
│   ├── installing.rst
│   ├── make.bat
│   ├── matplotlibrc
│   ├── sphinxext/
│   │   ├── gallery_generator.py
│   │   └── tutorial_builder.py
│   ├── tools/
│   │   ├── extract_examples.py
│   │   ├── generate_logos.py
│   │   ├── nb_to_doc.py
│   │   └── set_nb_kernels.py
│   ├── tutorial.yaml
│   └── whatsnew/
│       ├── index.rst
│       ├── v0.10.0.rst
│       ├── v0.10.1.rst
│       ├── v0.11.0.rst
│       ├── v0.11.1.rst
│       ├── v0.11.2.rst
│       ├── v0.12.0.rst
│       ├── v0.12.1.rst
│       ├── v0.12.2.rst
│       ├── v0.13.0.rst
│       ├── v0.13.1.rst
│       ├── v0.13.2.rst
│       ├── v0.2.0.rst
│       ├── v0.2.1.rst
│       ├── v0.3.0.rst
│       ├── v0.3.1.rst
│       ├── v0.4.0.rst
│       ├── v0.5.0.rst
│       ├── v0.5.1.rst
│       ├── v0.6.0.rst
│       ├── v0.7.0.rst
│       ├── v0.7.1.rst
│       ├── v0.8.0.rst
│       ├── v0.8.1.rst
│       ├── v0.9.0.rst
│       └── v0.9.1.rst
├── examples/
│   ├── .gitignore
│   ├── anscombes_quartet.py
│   ├── different_scatter_variables.py
│   ├── errorband_lineplots.py
│   ├── faceted_histogram.py
│   ├── faceted_lineplot.py
│   ├── grouped_barplot.py
│   ├── grouped_boxplot.py
│   ├── grouped_violinplots.py
│   ├── heat_scatter.py
│   ├── hexbin_marginals.py
│   ├── histogram_stacked.py
│   ├── horizontal_boxplot.py
│   ├── jitter_stripplot.py
│   ├── joint_histogram.py
│   ├── joint_kde.py
│   ├── kde_ridgeplot.py
│   ├── large_distributions.py
│   ├── layered_bivariate_plot.py
│   ├── logistic_regression.py
│   ├── many_facets.py
│   ├── many_pairwise_correlations.py
│   ├── marginal_ticks.py
│   ├── multiple_bivariate_kde.py
│   ├── multiple_conditional_kde.py
│   ├── multiple_ecdf.py
│   ├── multiple_regression.py
│   ├── pair_grid_with_kde.py
│   ├── paired_pointplots.py
│   ├── pairgrid_dotplot.py
│   ├── palette_choices.py
│   ├── palette_generation.py
│   ├── part_whole_bars.py
│   ├── pointplot_anova.py
│   ├── radial_facets.py
│   ├── regression_marginals.py
│   ├── residplot.py
│   ├── scatter_bubbles.py
│   ├── scatterplot_categorical.py
│   ├── scatterplot_matrix.py
│   ├── scatterplot_sizes.py
│   ├── simple_violinplots.py
│   ├── smooth_bivariate_kde.py
│   ├── spreadsheet_heatmap.py
│   ├── strip_regplot.py
│   ├── structured_heatmap.py
│   ├── three_variable_histogram.py
│   ├── timeseries_facets.py
│   ├── wide_data_lineplot.py
│   └── wide_form_violinplot.py
├── licences/
│   ├── APPDIRS_LICENSE
│   ├── HUSL_LICENSE
│   ├── NUMPYDOC_LICENSE
│   ├── PACKAGING_LICENSE
│   └── SCIPY_LICENSE
├── pyproject.toml
├── seaborn/
│   ├── __init__.py
│   ├── _base.py
│   ├── _compat.py
│   ├── _core/
│   │   ├── __init__.py
│   │   ├── data.py
│   │   ├── exceptions.py
│   │   ├── groupby.py
│   │   ├── moves.py
│   │   ├── plot.py
│   │   ├── properties.py
│   │   ├── rules.py
│   │   ├── scales.py
│   │   ├── subplots.py
│   │   └── typing.py
│   ├── _docstrings.py
│   ├── _marks/
│   │   ├── __init__.py
│   │   ├── area.py
│   │   ├── bar.py
│   │   ├── base.py
│   │   ├── dot.py
│   │   ├── line.py
│   │   └── text.py
│   ├── _statistics.py
│   ├── _stats/
│   │   ├── __init__.py
│   │   ├── aggregation.py
│   │   ├── base.py
│   │   ├── counting.py
│   │   ├── density.py
│   │   ├── order.py
│   │   └── regression.py
│   ├── _testing.py
│   ├── algorithms.py
│   ├── axisgrid.py
│   ├── categorical.py
│   ├── cm.py
│   ├── colors/
│   │   ├── __init__.py
│   │   ├── crayons.py
│   │   └── xkcd_rgb.py
│   ├── distributions.py
│   ├── external/
│   │   ├── __init__.py
│   │   ├── appdirs.py
│   │   ├── docscrape.py
│   │   ├── husl.py
│   │   ├── kde.py
│   │   └── version.py
│   ├── matrix.py
│   ├── miscplot.py
│   ├── objects.py
│   ├── palettes.py
│   ├── rcmod.py
│   ├── regression.py
│   ├── relational.py
│   ├── utils.py
│   └── widgets.py
├── setup.cfg
└── tests/
    ├── __init__.py
    ├── _core/
    │   ├── __init__.py
    │   ├── test_data.py
    │   ├── test_groupby.py
    │   ├── test_moves.py
    │   ├── test_plot.py
    │   ├── test_properties.py
    │   ├── test_rules.py
    │   ├── test_scales.py
    │   └── test_subplots.py
    ├── _marks/
    │   ├── __init__.py
    │   ├── test_area.py
    │   ├── test_bar.py
    │   ├── test_base.py
    │   ├── test_dot.py
    │   ├── test_line.py
    │   └── test_text.py
    ├── _stats/
    │   ├── __init__.py
    │   ├── test_aggregation.py
    │   ├── test_counting.py
    │   ├── test_density.py
    │   ├── test_order.py
    │   └── test_regression.py
    ├── conftest.py
    ├── test_algorithms.py
    ├── test_axisgrid.py
    ├── test_base.py
    ├── test_categorical.py
    ├── test_distributions.py
    ├── test_docstrings.py
    ├── test_matrix.py
    ├── test_miscplot.py
    ├── test_objects.py
    ├── test_palettes.py
    ├── test_rcmod.py
    ├── test_regression.py
    ├── test_relational.py
    ├── test_statistics.py
    └── test_utils.py
Download .txt
Showing preview only (222K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2798 symbols across 85 files)

FILE: doc/sphinxext/gallery_generator.py
  function execfile (line 22) | def execfile(filename, globals=None, locals=None):
  function create_thumbnail (line 128) | def create_thumbnail(infile, thumbfile,
  function indent (line 159) | def indent(s, N=4):
  class ExampleGenerator (line 164) | class ExampleGenerator:
    method __init__ (line 166) | def __init__(self, filename, target_dir):
    method dirname (line 185) | def dirname(self):
    method fname (line 189) | def fname(self):
    method modulename (line 193) | def modulename(self):
    method pyfilename (line 197) | def pyfilename(self):
    method rstfilename (line 201) | def rstfilename(self):
    method htmlfilename (line 205) | def htmlfilename(self):
    method pngfilename (line 209) | def pngfilename(self):
    method thumbfilename (line 214) | def thumbfilename(self):
    method sphinxtag (line 219) | def sphinxtag(self):
    method pagetitle (line 223) | def pagetitle(self):
    method plotfunc (line 227) | def plotfunc(self):
    method components (line 240) | def components(self):
    method extract_docstring (line 252) | def extract_docstring(self):
    method exec_file (line 295) | def exec_file(self):
    method toctree_entry (line 313) | def toctree_entry(self):
    method contents_entry (line 316) | def contents_entry(self):
  function main (line 332) | def main(app):
  function setup (line 392) | def setup(app):

FILE: doc/sphinxext/tutorial_builder.py
  function main (line 49) | def main(app):
  function write_thumbnail (line 79) | def write_thumbnail(svg_path, page):
  function introduction (line 95) | def introduction():
  function function_overview (line 130) | def function_overview():
  function data_structure (line 182) | def data_structure():
  function error_bars (line 204) | def error_bars():
  function properties (line 217) | def properties():
  function objects_interface (line 246) | def objects_interface():
  function relational (line 274) | def relational():
  function distributions (line 287) | def distributions():
  function categorical (line 300) | def categorical():
  function regression (line 313) | def regression():
  function axis_grids (line 327) | def axis_grids():
  function aesthetics (line 340) | def aesthetics():
  function color_palettes (line 352) | def color_palettes():
  function setup (line 365) | def setup(app):

FILE: doc/tools/extract_examples.py
  function line_type (line 10) | def line_type(line):
  function add_cell (line 18) | def add_cell(nb, lines, cell_type):

FILE: doc/tools/generate_logos.py
  function poisson_disc_sample (line 15) | def poisson_disc_sample(array_radius, pad_radius, candidates=100, d=2, s...
  function logo (line 61) | def logo(
  function savefig (line 159) | def savefig(fig, shape, variant):

FILE: doc/tools/nb_to_doc.py
  class MetadataError (line 41) | class MetadataError(Exception):
  function pop_recursive (line 45) | def pop_recursive(d, key, default=None):
  function strip_output (line 65) | def strip_output(nb):

FILE: examples/kde_ridgeplot.py
  function label (line 36) | def label(x, color, label):

FILE: seaborn/_base.py
  class SemanticMapping (line 29) | class SemanticMapping:
    method __init__ (line 43) | def __init__(self, plotter):
    method _check_list_length (line 52) | def _check_list_length(self, levels, values, variable):
    method _lookup_single (line 76) | def _lookup_single(self, key):
    method __call__ (line 80) | def __call__(self, key, *args, **kwargs):
  class HueMapping (line 88) | class HueMapping(SemanticMapping):
    method __init__ (line 99) | def __init__(
    method _lookup_single (line 173) | def _lookup_single(self, key):
    method infer_map_type (line 205) | def infer_map_type(self, palette, norm, input_format, var_type):
    method categorical_mapping (line 220) | def categorical_mapping(self, data, palette, order):
    method numeric_mapping (line 254) | def numeric_mapping(self, data, palette, norm):
  class SizeMapping (line 298) | class SizeMapping(SemanticMapping):
    method __init__ (line 303) | def __init__(
    method infer_map_type (line 359) | def infer_map_type(self, norm, sizes, var_type):
    method _lookup_single (line 370) | def _lookup_single(self, key):
    method categorical_mapping (line 381) | def categorical_mapping(self, data, sizes, order):
    method numeric_mapping (line 439) | def numeric_mapping(self, data, sizes, norm):
  class StyleMapping (line 519) | class StyleMapping(SemanticMapping):
    method __init__ (line 525) | def __init__(self, plotter, markers=None, dashes=None, order=None):
    method _lookup_single (line 583) | def _lookup_single(self, key, attr=None):
    method _map_attributes (line 591) | def _map_attributes(self, arg, levels, defaults, attr):
  class VectorPlotter (line 616) | class VectorPlotter:
    method __init__ (line 626) | def __init__(self, data=None, variables={}):
    method has_xy_data (line 644) | def has_xy_data(self):
    method var_levels (line 649) | def var_levels(self):
    method assign_variables (line 666) | def assign_variables(self, data=None, variables={}):
    method _assign_variables_wideform (line 695) | def _assign_variables_wideform(self, data=None, **kwargs):
    method map_hue (line 836) | def map_hue(self, palette=None, order=None, norm=None, saturation=1):
    method map_size (line 840) | def map_size(self, sizes=None, order=None, norm=None):
    method map_style (line 844) | def map_style(self, markers=None, dashes=None, order=None):
    method iter_data (line 848) | def iter_data(
    method comp_data (line 968) | def comp_data(self):
    method _get_axes (line 1012) | def _get_axes(self, sub_vars):
    method _attach (line 1027) | def _attach(
    method _get_scale_transforms (line 1166) | def _get_scale_transforms(self, axis):
    method _add_axis_labels (line 1188) | def _add_axis_labels(self, ax, default_x="", default_y=""):
    method add_legend_data (line 1201) | def add_legend_data(
    method _update_legend_data (line 1283) | def _update_legend_data(
    method scale_native (line 1337) | def scale_native(self, axis, *args, **kwargs):
    method scale_numeric (line 1343) | def scale_numeric(self, axis, *args, **kwargs):
    method scale_datetime (line 1350) | def scale_datetime(self, axis, *args, **kwargs):
    method scale_categorical (line 1357) | def scale_categorical(self, axis, order=None, formatter=None):
  class VariableType (line 1451) | class VariableType(UserString):
    method __init__ (line 1462) | def __init__(self, data):
    method __eq__ (line 1466) | def __eq__(self, other):
  function variable_type (line 1471) | def variable_type(vector, boolean_type="numeric"):
  function infer_orient (line 1563) | def infer_orient(x=None, y=None, orient=None, require_numeric=True):
  function unique_dashes (line 1646) | def unique_dashes(n):
  function unique_markers (line 1697) | def unique_markers(n):
  function categorical_order (line 1743) | def categorical_order(vector, order=None):

FILE: seaborn/_compat.py
  function norm_from_scale (line 11) | def norm_from_scale(scale, norm):
  function get_colormap (line 59) | def get_colormap(name):
  function register_colormap (line 67) | def register_colormap(name, cmap):
  function set_layout_engine (line 76) | def set_layout_engine(
  function get_layout_engine (line 94) | def get_layout_engine(fig: Figure) -> mpl.layout_engine.LayoutEngine | N...
  function share_axis (line 103) | def share_axis(ax0, ax1, which):
  function get_legend_handles (line 112) | def get_legend_handles(legend):
  function groupby_apply_include_groups (line 120) | def groupby_apply_include_groups(val):
  function get_converter (line 126) | def get_converter(axis):

FILE: seaborn/_core/data.py
  class PlotData (line 15) | class PlotData:
    method __init__ (line 49) | def __init__(
    method __contains__ (line 72) | def __contains__(self, key: str) -> bool:
    method join (line 78) | def join(
    method _assign_variables (line 125) | def _assign_variables(
  function handle_data_source (line 268) | def handle_data_source(data: DataSource) -> pd.DataFrame | Mapping | None:

FILE: seaborn/_core/exceptions.py
  class PlotSpecError (line 10) | class PlotSpecError(RuntimeError):
    method _during (line 22) | def _during(cls, step: str, var: str = "") -> PlotSpecError:

FILE: seaborn/_core/groupby.py
  class GroupBy (line 16) | class GroupBy:
    method __init__ (line 29) | def __init__(self, order: list[str] | dict[str, list | None]):
    method _get_groups (line 49) | def _get_groups(
    method _reorder_columns (line 73) | def _reorder_columns(self, res, data):
    method agg (line 79) | def agg(self, data: DataFrame, *args, **kwargs) -> DataFrame:
    method apply (line 105) | def apply(

FILE: seaborn/_core/moves.py
  class Move (line 16) | class Move:
    method __call__ (line 21) | def __call__(
  class Jitter (line 28) | class Jitter(Move):
    method __call__ (line 53) | def __call__(
  class Dodge (line 81) | class Dodge(Move):
    method __call__ (line 106) | def __call__(
  class Stack (line 154) | class Stack(Move):
    method _stack (line 165) | def _stack(self, df, orient):
    method __call__ (line 183) | def __call__(
  class Shift (line 194) | class Shift(Move):
    method __call__ (line 211) | def __call__(
  class Norm (line 222) | class Norm(Move):
    method _norm (line 250) | def _norm(self, df, var):
    method __call__ (line 263) | def __call__(

FILE: seaborn/_core/plot.py
  class Layer (line 59) | class Layer(TypedDict, total=False):
  class FacetSpec (line 72) | class FacetSpec(TypedDict, total=False):
  class PairSpec (line 79) | class PairSpec(TypedDict, total=False):
  function theme_context (line 91) | def theme_context(params: dict[str, Any]) -> Generator:
  function build_plot_signature (line 109) | def build_plot_signature(cls):
  class ThemeConfig (line 144) | class ThemeConfig(mpl.RcParams):
    method __init__ (line 154) | def __init__(self):
    method _default (line 159) | def _default(self) -> dict[str, Any]:
    method reset (line 168) | def reset(self) -> None:
    method update (line 172) | def update(self, other: dict[str, Any] | None = None, /, **kwds):
    method _filter_params (line 181) | def _filter_params(self, params: dict[str, Any]) -> dict[str, Any]:
    method _html_table (line 188) | def _html_table(self, params: dict[str, Any]) -> list[str]:
    method _repr_html_ (line 197) | def _repr_html_(self) -> str:
  class DisplayConfig (line 209) | class DisplayConfig(TypedDict):
  class PlotConfig (line 216) | class PlotConfig:
    method __init__ (line 218) | def __init__(self):
    method theme (line 224) | def theme(self) -> dict[str, Any]:
    method display (line 235) | def display(self) -> DisplayConfig:
  class Plot (line 253) | class Plot:
    method __init__ (line 305) | def __init__(
    method _resolve_positionals (line 339) | def _resolve_positionals(
    method __add__ (line 375) | def __add__(self, other):
    method _repr_png_ (line 383) | def _repr_png_(self) -> tuple[bytes, dict[str, float]] | None:
    method _repr_svg_ (line 389) | def _repr_svg_(self) -> str | None:
    method _clone (line 395) | def _clone(self) -> Plot:
    method _theme_with_defaults (line 421) | def _theme_with_defaults(self) -> dict[str, Any]:
    method _variables (line 428) | def _variables(self) -> list[str]:
    method on (line 442) | def on(self, target: Axes | SubFigure | Figure) -> Plot:
    method add (line 484) | def add(
    method pair (line 577) | def pair(
    method facet (line 640) | def facet(
    method scale (line 703) | def scale(self, **scales: Scale) -> Plot:
    method share (line 730) | def share(self, **shares: bool | str) -> Plot:
    method limit (line 749) | def limit(self, **limits: tuple[Any, Any]) -> Plot:
    method label (line 770) | def label(
    method layout (line 809) | def layout(
    method theme (line 862) | def theme(self, config: Mapping[str, Any], /) -> Plot:
    method save (line 889) | def save(self, loc, **kwargs) -> Plot:
    method show (line 907) | def show(self, **kwargs) -> None:
    method plot (line 927) | def plot(self, pyplot: bool = False) -> Plotter:
    method _plot (line 934) | def _plot(self, pyplot: bool = False) -> Plotter:
  class Plotter (line 974) | class Plotter:
    method __init__ (line 986) | def __init__(self, pyplot: bool, theme: dict[str, Any]):
    method save (line 995) | def save(self, loc, **kwargs) -> Plotter:  # TODO type args
    method show (line 1005) | def show(self, **kwargs) -> None:
    method _repr_png_ (line 1021) | def _repr_png_(self) -> tuple[bytes, dict[str, float]] | None:
    method _repr_svg_ (line 1050) | def _repr_svg_(self) -> str | None:
    method _extract_data (line 1071) | def _extract_data(self, p: Plot) -> tuple[PlotData, list[Layer]]:
    method _resolve_label (line 1087) | def _resolve_label(self, p: Plot, var: str, auto_label: str | None) ->...
    method _setup_figure (line 1107) | def _setup_figure(self, p: Plot, common: PlotData, layers: list[Layer]...
    method _compute_stats (line 1209) | def _compute_stats(self, spec: Plot, layers: list[Layer]) -> None:
    method _get_scale (line 1263) | def _get_scale(
    method _get_subplot_data (line 1283) | def _get_subplot_data(self, df, var, view, share_state):
    method _setup_scales (line 1305) | def _setup_scales(
    method _plot_layer (line 1417) | def _plot_layer(self, p: Plot, layer: Layer) -> None:
    method _unscale_coords (line 1497) | def _unscale_coords(
    method _generate_pairings (line 1522) | def _generate_pairings(
    method _get_subplot_index (line 1564) | def _get_subplot_index(self, df: DataFrame, subplot: dict) -> Index:
    method _filter_subplot_data (line 1575) | def _filter_subplot_data(self, df: DataFrame, subplot: dict) -> DataFr...
    method _setup_split_generator (line 1586) | def _setup_split_generator(
    method _update_legend_contents (line 1666) | def _update_legend_contents(
    method _make_legend (line 1730) | def _make_legend(self, p: Plot) -> None:
    method _finalize_figure (line 1779) | def _finalize_figure(self, p: Plot) -> None:

FILE: seaborn/_core/properties.py
  class Property (line 44) | class Property:
    method __init__ (line 53) | def __init__(self, variable: str | None = None):
    method default_scale (line 59) | def default_scale(self, data: Series) -> Scale:
    method infer_scale (line 72) | def infer_scale(self, arg: Any, data: Series) -> Scale:
    method get_mapping (line 92) | def get_mapping(self, scale: Scale, data: Series) -> Mapping:
    method standardize (line 98) | def standardize(self, val: Any) -> Any:
    method _check_dict_entries (line 102) | def _check_dict_entries(self, levels: list, values: dict) -> None:
    method _check_list_length (line 110) | def _check_list_length(self, levels: list, values: list) -> list:
  class Coordinate (line 140) | class Coordinate(Property):
  class IntervalProperty (line 151) | class IntervalProperty(Property):
    method default_range (line 159) | def default_range(self) -> tuple[float, float]:
    method _forward (line 163) | def _forward(self, values: ArrayLike) -> ArrayLike:
    method _inverse (line 167) | def _inverse(self, values: ArrayLike) -> ArrayLike:
    method infer_scale (line 171) | def infer_scale(self, arg: Any, data: Series) -> Scale:
    method get_mapping (line 190) | def get_mapping(self, scale: Scale, data: Series) -> Mapping:
    method _get_nominal_mapping (line 218) | def _get_nominal_mapping(self, scale: Nominal, data: Series) -> Mapping:
    method _get_boolean_mapping (line 232) | def _get_boolean_mapping(self, scale: Boolean, data: Series) -> Mapping:
    method _get_values (line 244) | def _get_values(self, scale: Scale, levels: list) -> list:
  class PointSize (line 270) | class PointSize(IntervalProperty):
    method _forward (line 274) | def _forward(self, values):
    method _inverse (line 278) | def _inverse(self, values):
  class LineWidth (line 283) | class LineWidth(IntervalProperty):
    method default_range (line 286) | def default_range(self) -> tuple[float, float]:
  class EdgeWidth (line 292) | class EdgeWidth(IntervalProperty):
    method default_range (line 295) | def default_range(self) -> tuple[float, float]:
  class Stroke (line 301) | class Stroke(IntervalProperty):
  class Alpha (line 306) | class Alpha(IntervalProperty):
  class Offset (line 312) | class Offset(IntervalProperty):
  class FontSize (line 318) | class FontSize(IntervalProperty):
    method default_range (line 323) | def default_range(self) -> tuple[float, float]:
  class ObjectProperty (line 334) | class ObjectProperty(Property):
    method _default_values (line 343) | def _default_values(self, n: int) -> list:
    method default_scale (line 346) | def default_scale(self, data: Series) -> Scale:
    method infer_scale (line 350) | def infer_scale(self, arg: Any, data: Series) -> Scale:
    method get_mapping (line 354) | def get_mapping(self, scale: Scale, data: Series) -> Mapping:
    method _get_values (line 373) | def _get_values(self, scale: Scale, levels: list) -> list:
  class Marker (line 394) | class Marker(ObjectProperty):
    method standardize (line 403) | def standardize(self, val: MarkerPattern) -> MarkerStyle:
    method _default_values (line 406) | def _default_values(self, n: int) -> list[MarkerStyle]:
  class LineStyle (line 438) | class LineStyle(ObjectProperty):
    method standardize (line 442) | def standardize(self, val: str | DashPattern) -> DashPatternWithOffset:
    method _default_values (line 445) | def _default_values(self, n: int) -> list[DashPatternWithOffset]:
    method _get_dash_pattern (line 489) | def _get_dash_pattern(style: str | DashPattern) -> DashPatternWithOffset:
  class TextAlignment (line 535) | class TextAlignment(ObjectProperty):
  class HorizontalAlignment (line 539) | class HorizontalAlignment(TextAlignment):
    method _default_values (line 541) | def _default_values(self, n: int) -> list:
  class VerticalAlignment (line 546) | class VerticalAlignment(TextAlignment):
    method _default_values (line 548) | def _default_values(self, n: int) -> list:
  class Color (line 558) | class Color(Property):
    method standardize (line 563) | def standardize(self, val: ColorSpec) -> RGBTuple | RGBATuple:
    method _standardize_color_sequence (line 571) | def _standardize_color_sequence(self, colors: ArrayLike) -> ArrayLike:
    method infer_scale (line 586) | def infer_scale(self, arg: Any, data: Series) -> Scale:
    method get_mapping (line 627) | def get_mapping(self, scale: Scale, data: Series) -> Mapping:
    method _get_nominal_mapping (line 668) | def _get_nominal_mapping(self, scale: Nominal, data: Series) -> Mapping:
    method _get_boolean_mapping (line 682) | def _get_boolean_mapping(self, scale: Boolean, data: Series) -> Mapping:
    method _get_values (line 697) | def _get_values(self, scale: Scale, levels: list) -> ArrayLike:
  class Fill (line 732) | class Fill(Property):
    method default_scale (line 737) | def default_scale(self, data: Series) -> Scale:
    method infer_scale (line 741) | def infer_scale(self, arg: Any, data: Series) -> Scale:
    method standardize (line 745) | def standardize(self, val: Any) -> bool:
    method _default_values (line 748) | def _default_values(self, n: int) -> list:
    method get_mapping (line 759) | def get_mapping(self, scale: Scale, data: Series) -> Mapping:
    method _get_values (line 778) | def _get_values(self, scale: Scale, levels: list) -> list:

FILE: seaborn/_core/rules.py
  class VarType (line 17) | class VarType(UserString):
    method __init__ (line 29) | def __init__(self, data):
    method __eq__ (line 33) | def __eq__(self, other):
  function variable_type (line 38) | def variable_type(
  function categorical_order (line 145) | def categorical_order(vector: Series, order: list | None = None) -> list:

FILE: seaborn/_core/scales.py
  class Scale (line 55) | class Scale:
    method __post_init__ (line 66) | def __post_init__(self):
    method tick (line 72) | def tick(self):
    method label (line 75) | def label(self):
    method _get_locators (line 78) | def _get_locators(self):
    method _get_formatter (line 81) | def _get_formatter(self, locator: Locator | None = None):
    method _get_scale (line 84) | def _get_scale(self, name: str, forward: Callable, inverse: Callable):
    method _spacing (line 98) | def _spacing(self, x: Series) -> float:
    method _setup (line 106) | def _setup(
    method _finalize (line 111) | def _finalize(self, p: Plot, axis: Axis) -> None:
    method __call__ (line 115) | def __call__(self, data: Series) -> ArrayLike:
    method _identity (line 137) | def _identity():
  class Boolean (line 149) | class Boolean(Scale):
    method _setup (line 164) | def _setup(
    method _finalize (line 202) | def _finalize(self, p: Plot, axis: Axis) -> None:
    method tick (line 220) | def tick(self, locator: Locator | None = None):
    method label (line 225) | def label(self, formatter: Formatter | None = None):
    method _get_locators (line 230) | def _get_locators(self, locator):
    method _get_formatter (line 235) | def _get_formatter(self, locator, formatter):
  class Nominal (line 242) | class Nominal(Scale):
    method _setup (line 253) | def _setup(
    method _finalize (line 324) | def _finalize(self, p: Plot, axis: Axis) -> None:
    method tick (line 337) | def tick(self, locator: Locator | None = None) -> Nominal:
    method label (line 359) | def label(self, formatter: Formatter | None = None) -> Nominal:
    method _get_locators (line 382) | def _get_locators(self, locator):
    method _get_formatter (line 391) | def _get_formatter(self, locator, formatter):
  class Ordinal (line 402) | class Ordinal(Scale):
  class Discrete (line 408) | class Discrete(Scale):
  class ContinuousBase (line 414) | class ContinuousBase(Scale):
    method _setup (line 419) | def _setup(
    method _get_transform (line 491) | def _get_transform(self):
  class Continuous (line 526) | class Continuous(ContinuousBase):
    method tick (line 538) | def tick(
    method label (line 599) | def label(
    method _parse_for_log_params (line 651) | def _parse_for_log_params(
    method _get_locators (line 665) | def _get_locators(self, locator, at, upto, count, every, between, minor):
    method _get_formatter (line 721) | def _get_formatter(self, locator, formatter, like, base, unit):
  class Temporal (line 762) | class Temporal(ContinuousBase):
    method tick (line 780) | def tick(
    method label (line 814) | def label(
    method _get_locators (line 843) | def _get_locators(self, locator, upto):
    method _get_formatter (line 856) | def _get_formatter(self, locator, formatter, concise):
  class PseudoAxis (line 889) | class PseudoAxis:
    method __init__ (line 901) | def __init__(self, scale):
    method set_view_interval (line 916) | def set_view_interval(self, vmin, vmax):
    method get_view_interval (line 919) | def get_view_interval(self):
    method set_data_interval (line 927) | def set_data_interval(self, vmin, vmax):
    method get_data_interval (line 930) | def get_data_interval(self):
    method get_tick_space (line 933) | def get_tick_space(self):
    method set_major_locator (line 938) | def set_major_locator(self, locator):
    method set_major_formatter (line 942) | def set_major_formatter(self, formatter):
    method set_minor_locator (line 946) | def set_minor_locator(self, locator):
    method set_minor_formatter (line 950) | def set_minor_formatter(self, formatter):
    method set_units (line 954) | def set_units(self, units):
    method update_units (line 957) | def update_units(self, x):
    method convert_units (line 975) | def convert_units(self, x):
    method get_scale (line 983) | def get_scale(self):
    method get_majorticklocs (line 991) | def get_majorticklocs(self):
  function _make_identity_transforms (line 999) | def _make_identity_transforms() -> TransFuncs:
  function _make_logit_transforms (line 1007) | def _make_logit_transforms(base: float | None = None) -> TransFuncs:
  function _make_log_transforms (line 1022) | def _make_log_transforms(base: float | None = None) -> TransFuncs:
  function _make_symlog_transforms (line 1047) | def _make_symlog_transforms(c: float = 1, base: float = 10) -> TransFuncs:
  function _make_sqrt_transforms (line 1067) | def _make_sqrt_transforms() -> TransFuncs:
  function _make_power_transforms (line 1078) | def _make_power_transforms(exp: float) -> TransFuncs:
  function _default_spacer (line 1089) | def _default_spacer(x: Series) -> float:

FILE: seaborn/_core/subplots.py
  class Subplots (line 16) | class Subplots:
    method __init__ (line 32) | def __init__(
    method _check_dimension_uniqueness (line 46) | def _check_dimension_uniqueness(
    method _determine_grid_dimensions (line 78) | def _determine_grid_dimensions(
    method _handle_wrapping (line 102) | def _handle_wrapping(
    method _determine_axis_sharing (line 121) | def _determine_axis_sharing(self, pair_spec: PairSpec) -> None:
    method init_figure (line 142) | def init_figure(
    method __iter__ (line 257) | def __iter__(self) -> Generator[dict, None, None]:  # TODO TypedDict?
    method __len__ (line 261) | def __len__(self) -> int:

FILE: seaborn/_core/typing.py
  class DataFrameProtocol (line 23) | class DataFrameProtocol(Protocol):
    method to_pandas (line 25) | def to_pandas(self) -> DataFrame:
  class Default (line 43) | class Default:
    method __repr__ (line 44) | def __repr__(self):
  class Deprecated (line 48) | class Deprecated:
    method __repr__ (line 49) | def __repr__(self):

FILE: seaborn/_docstrings.py
  class DocstringComponents (line 6) | class DocstringComponents:
    method __init__ (line 10) | def __init__(self, comp_dict, strip_whitespace=True):
    method __getattr__ (line 25) | def __getattr__(self, attr):
    method from_nested_components (line 44) | def from_nested_components(cls, **kwargs):
    method from_function_params (line 49) | def from_function_params(cls, func):

FILE: seaborn/_marks/area.py
  class AreaBase (line 21) | class AreaBase:
    method _plot (line 23) | def _plot(self, split_gen, scales, orient):
    method _standardize_coordinate_parameters (line 53) | def _standardize_coordinate_parameters(self, data, orient):
    method _postprocess_artist (line 56) | def _postprocess_artist(self, artist, ax, orient):
    method _get_verts (line 59) | def _get_verts(self, data, orient):
    method _legend_artist (line 71) | def _legend_artist(self, variables, value, scales):
  class Area (line 91) | class Area(AreaBase, Mark):
    method _standardize_coordinate_parameters (line 115) | def _standardize_coordinate_parameters(self, data, orient):
    method _postprocess_artist (line 119) | def _postprocess_artist(self, artist, ax, orient):
  class Band (line 141) | class Band(AreaBase, Mark):
    method _standardize_coordinate_parameters (line 162) | def _standardize_coordinate_parameters(self, data, orient):

FILE: seaborn/_marks/bar.py
  class BarBase (line 27) | class BarBase(Mark):
    method _make_patches (line 29) | def _make_patches(self, data, scales, orient):
    method _resolve_properties (line 80) | def _resolve_properties(self, data, scales):
    method _legend_artist (line 96) | def _legend_artist(
  class Bar (line 113) | class Bar(BarBase):
    method _plot (line 138) | def _plot(self, split_gen, scales, orient):
  class Bars (line 180) | class Bars(BarBase):
    method _plot (line 205) | def _plot(self, split_gen, scales, orient):

FILE: seaborn/_marks/base.py
  class Mappable (line 26) | class Mappable:
    method __init__ (line 27) | def __init__(
    method __repr__ (line 63) | def __repr__(self):
    method depend (line 78) | def depend(self) -> Any:
    method grouping (line 83) | def grouping(self) -> bool:
    method default (line 87) | def default(self) -> Any:
  class Mark (line 105) | class Mark:
    method _mappable_props (line 111) | def _mappable_props(self):
    method _grouping_props (line 118) | def _grouping_props(self):
    method _resolve (line 127) | def _resolve(
    method _infer_orient (line 200) | def _infer_orient(self, scales: dict) -> str:  # TODO type scales
    method _plot (line 216) | def _plot(
    method _legend_artist (line 225) | def _legend_artist(
  function resolve_properties (line 232) | def resolve_properties(
  function resolve_color (line 242) | def resolve_color(
  function document_properties (line 298) | def document_properties(mark):

FILE: seaborn/_marks/dot.py
  class DotBase (line 27) | class DotBase(Mark):
    method _resolve_paths (line 29) | def _resolve_paths(self, data):
    method _resolve_properties (line 47) | def _resolve_properties(self, data, scales):
    method _plot (line 62) | def _plot(self, split_gen, scales, orient):
    method _legend_artist (line 87) | def _legend_artist(
  class Dot (line 108) | class Dot(DotBase):
    method _resolve_properties (line 132) | def _resolve_properties(self, data, scales):
  class Dots (line 162) | class Dots(DotBase):
    method _resolve_properties (line 185) | def _resolve_properties(self, data, scales):

FILE: seaborn/_marks/line.py
  class Path (line 22) | class Path(Mark):
    method _plot (line 48) | def _plot(self, split_gen, scales, orient):
    method _legend_artist (line 78) | def _legend_artist(self, variables, value, scales):
    method _handle_capstyle (line 102) | def _handle_capstyle(self, kws, vals):
  class Line (line 113) | class Line(Path):
  class Paths (line 132) | class Paths(Mark):
    method __post_init__ (line 152) | def __post_init__(self):
    method _plot (line 160) | def _plot(self, split_gen, scales, orient):
    method _legend_artist (line 193) | def _legend_artist(self, variables, value, scales):
    method _setup_segments (line 210) | def _setup_segments(self, data, orient):
  class Lines (line 223) | class Lines(Paths):
  class Range (line 241) | class Range(Paths):
    method _setup_segments (line 250) | def _setup_segments(self, data, orient):
  class Dash (line 267) | class Dash(Paths):
    method _setup_segments (line 278) | def _setup_segments(self, data, orient):

FILE: seaborn/_marks/text.py
  class Text (line 23) | class Text(Mark):
    method _plot (line 40) | def _plot(self, split_gen, scales, orient):

FILE: seaborn/_statistics.py
  class KDE (line 42) | class KDE:
    method __init__ (line 44) | def __init__(
    method _define_support_grid (line 90) | def _define_support_grid(self, x, bw, cut, clip, gridsize):
    method _define_support_univariate (line 98) | def _define_support_univariate(self, x, weights):
    method _define_support_bivariate (line 107) | def _define_support_bivariate(self, x1, x2, weights):
    method define_support (line 125) | def define_support(self, x1, x2=None, weights=None, cache=True):
    method _fit (line 137) | def _fit(self, fit_data, weights=None):
    method _eval_univariate (line 148) | def _eval_univariate(self, x, weights=None):
    method _eval_bivariate (line 166) | def _eval_bivariate(self, x1, x2, weights=None):
    method __call__ (line 190) | def __call__(self, x1, x2=None, weights=None):
  class Histogram (line 200) | class Histogram:
    method __init__ (line 202) | def __init__(
    method _define_bin_edges (line 255) | def _define_bin_edges(self, x, weights, bins, binwidth, binrange, disc...
    method define_bin_params (line 276) | def define_bin_params(self, x1, x2=None, weights=None, cache=True):
    method _eval_bivariate (line 336) | def _eval_bivariate(self, x1, x2, weights):
    method _eval_univariate (line 368) | def _eval_univariate(self, x, weights):
    method __call__ (line 394) | def __call__(self, x1, x2=None, weights=None):
  class ECDF (line 402) | class ECDF:
    method __init__ (line 404) | def __init__(self, stat="proportion", complementary=False):
    method _eval_bivariate (line 419) | def _eval_bivariate(self, x1, x2, weights):
    method _eval_univariate (line 423) | def _eval_univariate(self, x, weights):
    method __call__ (line 443) | def __call__(self, x1, x2=None, weights=None):
  class EstimateAggregator (line 457) | class EstimateAggregator:
    method __init__ (line 459) | def __init__(self, estimator, errorbar=None, **boot_kws):
    method __call__ (line 484) | def __call__(self, data, var):
  class WeightedAggregator (line 523) | class WeightedAggregator:
    method __init__ (line 525) | def __init__(self, estimator, errorbar=None, **boot_kws):
    method __call__ (line 558) | def __call__(self, data, var):
  class LetterValues (line 579) | class LetterValues:
    method __init__ (line 581) | def __init__(self, k_depth, outlier_prop, trust_alpha):
    method _compute_k (line 619) | def _compute_k(self, n):
    method __call__ (line 640) | def __call__(self, x):
  function _percentile_interval (line 663) | def _percentile_interval(data, width):
  function _validate_errorbar_arg (line 670) | def _validate_errorbar_arg(arg):

FILE: seaborn/_stats/aggregation.py
  class Agg (line 19) | class Agg(Stat):
    method __call__ (line 41) | def __call__(
  class Est (line 56) | class Est(Stat):
    method _process (line 94) | def _process(
    method __call__ (line 102) | def __call__(
  class Rolling (line 126) | class Rolling(Stat):
    method __call__ (line 129) | def __call__(self, data, groupby, orient, scales):

FILE: seaborn/_stats/base.py
  class Stat (line 16) | class Stat:
    method _check_param_one_of (line 33) | def _check_param_one_of(self, param: str, options: Iterable[Any]) -> N...
    method _check_grouping_vars (line 45) | def _check_grouping_vars(
    method __call__ (line 57) | def __call__(

FILE: seaborn/_stats/counting.py
  class Count (line 19) | class Count(Stat):
    method __call__ (line 34) | def __call__(
  class Hist (line 49) | class Hist(Stat):
    method __post_init__ (line 116) | def __post_init__(self):
    method _define_bin_edges (line 123) | def _define_bin_edges(self, vals, weight, bins, binwidth, binrange, di...
    method _define_bin_params (line 143) | def _define_bin_params(self, data, orient, scale_type):
    method _get_bins_and_eval (line 165) | def _get_bins_and_eval(self, data, orient, groupby, scale_type):
    method _eval (line 170) | def _eval(self, data, orient, bin_kws):
    method _normalize (line 183) | def _normalize(self, data):
    method __call__ (line 201) | def __call__(

FILE: seaborn/_stats/density.py
  class KDE (line 22) | class KDE(Stat):
    method __post_init__ (line 94) | def __post_init__(self):
    method _check_var_list_or_boolean (line 99) | def _check_var_list_or_boolean(self, param: str, grouping_vars: Any) -...
    method _fit (line 110) | def _fit(self, data: DataFrame, orient: str) -> gaussian_kde:
    method _get_support (line 122) | def _get_support(self, data: DataFrame, orient: str) -> ndarray:
    method _fit_and_evaluate (line 133) | def _fit_and_evaluate(
    method _transform (line 154) | def _transform(
    method __call__ (line 172) | def __call__(

FILE: seaborn/_stats/order.py
  class Perc (line 38) | class Perc(Stat):
    method _percentile (line 62) | def _percentile(self, data: DataFrame, var: str) -> DataFrame:
    method __call__ (line 73) | def __call__(

FILE: seaborn/_stats/regression.py
  class PolyFit (line 11) | class PolyFit(Stat):
    method _fit_predict (line 22) | def _fit_predict(self, data):
    method __call__ (line 39) | def __call__(self, data, groupby, orient, scales):
  class OLSFit (line 48) | class OLSFit(Stat):

FILE: seaborn/_testing.py
  function assert_artists_equal (line 24) | def assert_artists_equal(list1, list2):
  function assert_legends_equal (line 50) | def assert_legends_equal(leg1, leg2):
  function assert_plots_equal (line 64) | def assert_plots_equal(ax1, ax2, labels=True):
  function assert_colors_equal (line 75) | def assert_colors_equal(a, b, check_alpha=True):

FILE: seaborn/algorithms.py
  function bootstrap (line 6) | def bootstrap(*args, **kwargs):
  function _structured_bootstrap (line 104) | def _structured_bootstrap(args, n_boot, units, func, func_kwargs, intege...

FILE: seaborn/axisgrid.py
  class _BaseGrid (line 37) | class _BaseGrid:
    method set (line 40) | def set(self, **kwargs):
    method fig (line 48) | def fig(self):
    method figure (line 57) | def figure(self):
    method apply (line 61) | def apply(self, func, *args, **kwargs):
    method pipe (line 76) | def pipe(self, func, *args, **kwargs):
    method savefig (line 90) | def savefig(self, *args, **kwargs):
  class Grid (line 103) | class Grid(_BaseGrid):
    method __init__ (line 108) | def __init__(self):
    method tight_layout (line 117) | def tight_layout(self, *args, **kwargs):
    method add_legend (line 126) | def add_legend(self, legend_data=None, title=None, label_order=None,
    method _update_legend_data (line 230) | def _update_legend_data(self, ax):
    method _get_palette (line 249) | def _get_palette(self, data, hue, hue_order, palette):
    method legend (line 280) | def legend(self):
    method tick_params (line 287) | def tick_params(self, axis='both', **kwargs):
  class FacetGrid (line 368) | class FacetGrid(Grid):
    method __init__ (line 371) | def __init__(
    method facet_data (line 643) | def facet_data(self):
    method map (line 683) | def map(self, func, *args, **kwargs):
    method map_dataframe (line 765) | def map_dataframe(self, func, *args, **kwargs):
    method _facet_color (line 836) | def _facet_color(self, hue_index, kw_color):
    method _facet_plot (line 844) | def _facet_plot(self, func, ax, plot_args, plot_kwargs):
    method _finalize_grid (line 859) | def _finalize_grid(self, axlabels):
    method facet_axis (line 864) | def facet_axis(self, row_i, col_j, modify_state=True):
    method despine (line 878) | def despine(self, **kwargs):
    method set_axis_labels (line 883) | def set_axis_labels(self, x_var=None, y_var=None, clear_inner=True, **...
    method set_xlabels (line 894) | def set_xlabels(self, label=None, clear_inner=True, **kwargs):
    method set_ylabels (line 905) | def set_ylabels(self, label=None, clear_inner=True, **kwargs):
    method set_xticklabels (line 916) | def set_xticklabels(self, labels=None, step=None, **kwargs):
    method set_yticklabels (line 932) | def set_yticklabels(self, labels=None, **kwargs):
    method set_titles (line 944) | def set_titles(self, template=None, row_template=None, col_template=No...
    method refline (line 1035) | def refline(self, *, x=None, y=None, color='.5', linestyle='--', **lin...
    method axes (line 1072) | def axes(self):
    method ax (line 1077) | def ax(self):
    method axes_dict (line 1088) | def axes_dict(self):
    method _inner_axes (line 1101) | def _inner_axes(self):
    method _left_axes (line 1119) | def _left_axes(self):
    method _not_left_axes (line 1131) | def _not_left_axes(self):
    method _bottom_axes (line 1143) | def _bottom_axes(self):
    method _not_bottom_axes (line 1160) | def _not_bottom_axes(self):
  class PairGrid (line 1177) | class PairGrid(Grid):
    method __init__ (line 1191) | def __init__(
    method map (line 1366) | def map(self, func, **kwargs):
    method map_lower (line 1383) | def map_lower(self, func, **kwargs):
    method map_upper (line 1398) | def map_upper(self, func, **kwargs):
    method map_offdiag (line 1413) | def map_offdiag(self, func, **kwargs):
    method map_diag (line 1437) | def map_diag(self, func, **kwargs):
    method _map_diag_iter_hue (line 1519) | def _map_diag_iter_hue(self, func, **kwargs):
    method _map_bivariate (line 1558) | def _map_bivariate(self, func, indices, **kwargs):
    method _plot_bivariate (line 1580) | def _plot_bivariate(self, x_var, y_var, ax, func, **kwargs):
    method _plot_bivariate_iter_hue (line 1619) | def _plot_bivariate_iter_hue(self, x_var, y_var, ax, func, **kwargs):
    method _add_axis_labels (line 1663) | def _add_axis_labels(self):
    method _find_numeric_cols (line 1670) | def _find_numeric_cols(self, data):
  class JointGrid (line 1679) | class JointGrid(_BaseGrid):
    method __init__ (line 1687) | def __init__(
    method _inject_kwargs (line 1769) | def _inject_kwargs(self, func, kws, params):
    method plot (line 1776) | def plot(self, joint_func, marginal_func, **kwargs):
    method plot_joint (line 1802) | def plot_joint(self, func, **kwargs):
    method plot_marginals (line 1838) | def plot_marginals(self, func, **kwargs):
    method refline (line 1899) | def refline(
    method set_axis_labels (line 1943) | def set_axis_labels(self, xlabel="", ylabel="", **kwargs):
  function pairplot (line 2010) | def pairplot(
  function jointplot (line 2184) | def jointplot(

FILE: seaborn/categorical.py
  class _CategoricalPlotter (line 49) | class _CategoricalPlotter(VectorPlotter):
    method __init__ (line 56) | def __init__(
    method _hue_backcompat (line 134) | def _hue_backcompat(self, color, palette, hue_order, force_hue=False):
    method _palette_without_hue_backcompat (line 187) | def _palette_without_hue_backcompat(self, palette, hue_order):
    method _point_kwargs_backcompat (line 207) | def _point_kwargs_backcompat(self, scale, join, kwargs):
    method _err_kws_backcompat (line 237) | def _err_kws_backcompat(self, err_kws, errcolor, errwidth, capsize):
    method _violin_scale_backcompat (line 264) | def _violin_scale_backcompat(self, scale, scale_hue, density_norm, com...
    method _violin_bw_backcompat (line 284) | def _violin_bw_backcompat(self, bw, bw_method):
    method _boxen_scale_backcompat (line 296) | def _boxen_scale_backcompat(self, scale, width_method):
    method _complement_color (line 312) | def _complement_color(self, color, base_color, hue_map):
    method _map_prop_with_hue (line 338) | def _map_prop_with_hue(self, name, value, fallback, plot_kws):
    method _adjust_cat_axis (line 354) | def _adjust_cat_axis(self, ax, axis):
    method _dodge_needed (line 385) | def _dodge_needed(self):
    method _dodge (line 394) | def _dodge(self, keys, data):
    method _invert_scale (line 409) | def _invert_scale(self, ax, data, vars=("x", "y")):
    method _configure_legend (line 421) | def _configure_legend(self, ax, func, common_kws=None, semantic_kws=No...
    method _native_width (line 433) | def _native_width(self):
    method _nested_offsets (line 447) | def _nested_offsets(self, width, dodge):
    method plot_strips (line 466) | def plot_strips(
    method plot_swarms (line 517) | def plot_swarms(
    method plot_boxes (line 591) | def plot_boxes(
    method plot_boxens (line 755) | def plot_boxens(
    method plot_violins (line 896) | def plot_violins(
    method plot_points (line 1172) | def plot_points(
    method plot_bars (line 1252) | def plot_bars(
    method plot_errorbars (line 1334) | def plot_errorbars(self, ax, data, capsize, err_kws):
  class _CategoricalAggPlotter (line 1363) | class _CategoricalAggPlotter(_CategoricalPlotter):
  function boxplot (line 1597) | def boxplot(
  function violinplot (line 1722) | def violinplot(
  function boxenplot (line 1912) | def boxenplot(
  function stripplot (line 2082) | def stripplot(
  function swarmplot (line 2207) | def swarmplot(
  function barplot (line 2336) | def barplot(
  function pointplot (line 2478) | def pointplot(
  function countplot (line 2627) | def countplot(
  function catplot (line 2761) | def catplot(
  class Beeswarm (line 3232) | class Beeswarm:
    method __init__ (line 3234) | def __init__(self, orient="x", width=0.8, warn_thresh=.05):
    method __call__ (line 3240) | def __call__(self, points, center):
    method beeswarm (line 3300) | def beeswarm(self, orig_xyr):
    method could_overlap (line 3332) | def could_overlap(self, xyr_i, swarm):
    method position_candidates (line 3346) | def position_candidates(self, xyr_i, neighbors):
    method first_non_overlapping_candidate (line 3363) | def first_non_overlapping_candidate(self, candidates, neighbors):
    method add_gutters (line 3396) | def add_gutters(self, points, center, trans_fwd, trans_inv):
  class BoxPlotContainer (line 3422) | class BoxPlotContainer:
    method __init__ (line 3424) | def __init__(self, artist_dict):
    method __repr__ (line 3443) | def __repr__(self):
    method __getitem__ (line 3446) | def __getitem__(self, idx):
    method __iter__ (line 3457) | def __iter__(self):
    method get_label (line 3460) | def get_label(self):
    method set_label (line 3463) | def set_label(self, value):
    method get_children (line 3466) | def get_children(self):
    method remove (line 3469) | def remove(self):

FILE: seaborn/distributions.py
  class _DistributionPlotter (line 99) | class _DistributionPlotter(VectorPlotter):
    method __init__ (line 104) | def __init__(
    method univariate (line 113) | def univariate(self):
    method data_variable (line 122) | def data_variable(self):
    method has_xy_data (line 130) | def has_xy_data(self):
    method _add_legend (line 135) | def _add_legend(
    method _artist_kws (line 170) | def _artist_kws(self, kws, fill, element, multiple, color, alpha):
    method _quantile_to_level (line 193) | def _quantile_to_level(self, data, quantile):
    method _cmap_from_color (line 203) | def _cmap_from_color(self, color):
    method _default_discrete (line 217) | def _default_discrete(self):
    method _resolve_multiple (line 227) | def _resolve_multiple(self, curves, multiple):
    method _compute_univariate_density (line 298) | def _compute_univariate_density(
    method plot_univariate_histogram (line 376) | def plot_univariate_histogram(
    method plot_bivariate_histogram (line 740) | def plot_bivariate_histogram(
    method plot_univariate_density (line 897) | def plot_univariate_density(
    method plot_bivariate_density (line 1028) | def plot_bivariate_density(
    method plot_univariate_ecdf (line 1210) | def plot_univariate_ecdf(self, estimate_kws, legend, **plot_kws):
    method plot_rug (line 1281) | def plot_rug(self, height, expand_margins, legend, **kws):
    method _plot_single_rug (line 1315) | def _plot_single_rug(self, sub_data, var, height, ax, kws):
  function histplot (line 1358) | def histplot(
  function kdeplot (line 1581) | def kdeplot(
  function ecdfplot (line 1861) | def ecdfplot(
  function rugplot (line 1973) | def rugplot(
  function displot (line 2094) | def displot(
  function _freedman_diaconis_bins (line 2375) | def _freedman_diaconis_bins(a):
  function distplot (line 2390) | def distplot(a=None, bins=None, hist=True, kde=True, rug=False, fit=None,

FILE: seaborn/external/appdirs.py
  function user_cache_dir (line 73) | def user_cache_dir(appname=None, appauthor=None, version=None, opinion=T...
  function _get_win_folder_from_registry (line 132) | def _get_win_folder_from_registry(csidl_name):
  function _get_win_folder_with_pywin32 (line 153) | def _get_win_folder_with_pywin32(csidl_name):
  function _get_win_folder_with_ctypes (line 180) | def _get_win_folder_with_ctypes(csidl_name):
  function _get_win_folder_with_jna (line 206) | def _get_win_folder_with_jna(csidl_name):

FILE: seaborn/external/docscrape.py
  function strip_blank_lines (line 40) | def strip_blank_lines(l):
  class Reader (line 49) | class Reader:
    method __init__ (line 53) | def __init__(self, data):
    method __getitem__ (line 68) | def __getitem__(self, n):
    method reset (line 71) | def reset(self):
    method read (line 74) | def read(self):
    method seek_next_non_empty_line (line 82) | def seek_next_non_empty_line(self):
    method eof (line 89) | def eof(self):
    method read_to_condition (line 92) | def read_to_condition(self, condition_func):
    method read_to_next_empty_line (line 102) | def read_to_next_empty_line(self):
    method read_to_next_unindented_line (line 110) | def read_to_next_unindented_line(self):
    method peek (line 115) | def peek(self, n=0):
    method is_empty (line 121) | def is_empty(self):
  class ParseError (line 125) | class ParseError(Exception):
    method __str__ (line 126) | def __str__(self):
  class NumpyDocString (line 136) | class NumpyDocString(Mapping):
    method __init__ (line 164) | def __init__(self, docstring, config={}):
    method __getitem__ (line 177) | def __getitem__(self, key):
    method __setitem__ (line 180) | def __setitem__(self, key, val):
    method __iter__ (line 186) | def __iter__(self):
    method __len__ (line 189) | def __len__(self):
    method _is_at_section (line 192) | def _is_at_section(self):
    method _strip (line 206) | def _strip(self, doc):
    method _read_to_next_section (line 219) | def _read_to_next_section(self):
    method _read_sections (line 230) | def _read_sections(self):
    method _parse_param_list (line 242) | def _parse_param_list(self, content, single_element_is_type=False):
    method _parse_see_also (line 299) | def _parse_see_also(self, content):
    method _parse_index (line 352) | def _parse_index(self, section, content):
    method _parse_summary (line 371) | def _parse_summary(self):
    method _parse (line 393) | def _parse(self):
    method _error_location (line 430) | def _error_location(self, msg, error=True):
    method _str_header (line 445) | def _str_header(self, name, symbol='-'):
    method _str_indent (line 448) | def _str_indent(self, doc, indent=4):
    method _str_signature (line 454) | def _str_signature(self):
    method _str_summary (line 460) | def _str_summary(self):
    method _str_extended_summary (line 466) | def _str_extended_summary(self):
    method _str_param_list (line 472) | def _str_param_list(self, name):
    method _str_section (line 488) | def _str_section(self, name):
    method _str_see_also (line 496) | def _str_see_also(self, func_role):
    method _str_index (line 528) | def _str_index(self):
    method __str__ (line 546) | def __str__(self, func_role=''):
  function indent (line 564) | def indent(str, indent=4):
  function dedent_lines (line 572) | def dedent_lines(lines):
  function header (line 577) | def header(text, style='-'):
  class FunctionDoc (line 581) | class FunctionDoc(NumpyDocString):
    method __init__ (line 582) | def __init__(self, func, role='func', doc=None, config={}):
    method get_func (line 609) | def get_func(self):
    method __str__ (line 617) | def __str__(self):
  class ClassDoc (line 634) | class ClassDoc(NumpyDocString):
    method __init__ (line 638) | def __init__(self, cls, doc=None, modulename='', func_doc=FunctionDoc,
    method methods (line 691) | def methods(self):
    method properties (line 701) | def properties(self):
    method _is_show_member (line 710) | def _is_show_member(self, name):

FILE: seaborn/external/husl.py
  function husl_to_rgb (line 31) | def husl_to_rgb(h, s, l):
  function husl_to_hex (line 35) | def husl_to_hex(h, s, l):
  function rgb_to_husl (line 39) | def rgb_to_husl(r, g, b):
  function hex_to_husl (line 43) | def hex_to_husl(hex):
  function huslp_to_rgb (line 47) | def huslp_to_rgb(h, s, l):
  function huslp_to_hex (line 51) | def huslp_to_hex(h, s, l):
  function rgb_to_huslp (line 55) | def rgb_to_huslp(r, g, b):
  function hex_to_huslp (line 59) | def hex_to_huslp(hex):
  function lch_to_rgb (line 63) | def lch_to_rgb(l, c, h):
  function rgb_to_lch (line 67) | def rgb_to_lch(r, g, b):
  function max_chroma (line 71) | def max_chroma(L, H):
  function _hrad_extremum (line 94) | def _hrad_extremum(L):
  function max_chroma_pastel (line 117) | def max_chroma_pastel(L):
  function dot_product (line 122) | def dot_product(a, b):
  function f (line 126) | def f(t):
  function f_inv (line 133) | def f_inv(t):
  function from_linear (line 140) | def from_linear(c):
  function to_linear (line 147) | def to_linear(c):
  function rgb_prepare (line 156) | def rgb_prepare(triple):
  function hex_to_rgb (line 178) | def hex_to_rgb(hex):
  function rgb_to_hex (line 187) | def rgb_to_hex(triple):
  function xyz_to_rgb (line 192) | def xyz_to_rgb(triple):
  function rgb_to_xyz (line 197) | def rgb_to_xyz(triple):
  function xyz_to_luv (line 202) | def xyz_to_luv(triple):
  function luv_to_xyz (line 222) | def luv_to_xyz(triple):
  function luv_to_lch (line 238) | def luv_to_lch(triple):
  function lch_to_luv (line 250) | def lch_to_luv(triple):
  function husl_to_lch (line 260) | def husl_to_lch(triple):
  function lch_to_husl (line 274) | def lch_to_husl(triple):
  function huslp_to_lch (line 288) | def huslp_to_lch(triple):
  function lch_to_huslp (line 302) | def lch_to_huslp(triple):

FILE: seaborn/external/kde.py
  class gaussian_kde (line 81) | class gaussian_kde:
    method __init__ (line 194) | def __init__(self, dataset, bw_method=None, weights=None):
    method evaluate (line 212) | def evaluate(self, points):
    method scotts_factor (line 270) | def scotts_factor(self):
    method silverman_factor (line 280) | def silverman_factor(self):
    method set_bandwidth (line 298) | def set_bandwidth(self, bw_method=None):
    method _compute_covariance (line 338) | def _compute_covariance(self):
    method pdf (line 354) | def pdf(self, x):
    method weights (line 367) | def weights(self):
    method neff (line 375) | def neff(self):

FILE: seaborn/external/version.py
  class InfinityType (line 34) | class InfinityType:
    method __repr__ (line 35) | def __repr__(self) -> str:
    method __hash__ (line 38) | def __hash__(self) -> int:
    method __lt__ (line 41) | def __lt__(self, other: object) -> bool:
    method __le__ (line 44) | def __le__(self, other: object) -> bool:
    method __eq__ (line 47) | def __eq__(self, other: object) -> bool:
    method __ne__ (line 50) | def __ne__(self, other: object) -> bool:
    method __gt__ (line 53) | def __gt__(self, other: object) -> bool:
    method __ge__ (line 56) | def __ge__(self, other: object) -> bool:
    method __neg__ (line 59) | def __neg__(self: object) -> "NegativeInfinityType":
  class NegativeInfinityType (line 66) | class NegativeInfinityType:
    method __repr__ (line 67) | def __repr__(self) -> str:
    method __hash__ (line 70) | def __hash__(self) -> int:
    method __lt__ (line 73) | def __lt__(self, other: object) -> bool:
    method __le__ (line 76) | def __le__(self, other: object) -> bool:
    method __eq__ (line 79) | def __eq__(self, other: object) -> bool:
    method __ne__ (line 82) | def __ne__(self, other: object) -> bool:
    method __gt__ (line 85) | def __gt__(self, other: object) -> bool:
    method __ge__ (line 88) | def __ge__(self, other: object) -> bool:
    method __neg__ (line 91) | def __neg__(self: object) -> InfinityType:
  class InvalidVersion (line 128) | class InvalidVersion(ValueError):
  class _BaseVersion (line 134) | class _BaseVersion:
    method __hash__ (line 137) | def __hash__(self) -> int:
    method __lt__ (line 143) | def __lt__(self, other: "_BaseVersion") -> bool:
    method __le__ (line 149) | def __le__(self, other: "_BaseVersion") -> bool:
    method __eq__ (line 155) | def __eq__(self, other: object) -> bool:
    method __ge__ (line 161) | def __ge__(self, other: "_BaseVersion") -> bool:
    method __gt__ (line 167) | def __gt__(self, other: "_BaseVersion") -> bool:
    method __ne__ (line 173) | def __ne__(self, other: object) -> bool:
  class Version (line 214) | class Version(_BaseVersion):
    method __init__ (line 218) | def __init__(self, version: str) -> None:
    method __repr__ (line 247) | def __repr__(self) -> str:
    method __str__ (line 250) | def __str__(self) -> str:
    method epoch (line 279) | def epoch(self) -> int:
    method release (line 284) | def release(self) -> Tuple[int, ...]:
    method pre (line 289) | def pre(self) -> Optional[Tuple[str, int]]:
    method post (line 294) | def post(self) -> Optional[int]:
    method dev (line 298) | def dev(self) -> Optional[int]:
    method local (line 302) | def local(self) -> Optional[str]:
    method public (line 309) | def public(self) -> str:
    method base_version (line 313) | def base_version(self) -> str:
    method is_prerelease (line 326) | def is_prerelease(self) -> bool:
    method is_postrelease (line 330) | def is_postrelease(self) -> bool:
    method is_devrelease (line 334) | def is_devrelease(self) -> bool:
    method major (line 338) | def major(self) -> int:
    method minor (line 342) | def minor(self) -> int:
    method micro (line 346) | def micro(self) -> int:
  function _parse_letter_version (line 350) | def _parse_letter_version(
  function _parse_local_version (line 389) | def _parse_local_version(local: str) -> Optional[LocalType]:
  function _cmpkey (line 401) | def _cmpkey(

FILE: seaborn/matrix.py
  function _index_to_label (line 31) | def _index_to_label(index):
  function _index_to_ticklabels (line 39) | def _index_to_ticklabels(index):
  function _convert_colors (line 47) | def _convert_colors(colors):
  function _matrix_mask (line 60) | def _matrix_mask(data, mask):
  class _HeatMapper (line 97) | class _HeatMapper:
    method __init__ (line 100) | def __init__(self, data, vmin, vmax, cmap, center, robust, annot, fmt,
    method _determine_cmap_params (line 192) | def _determine_cmap_params(self, plot_data, vmin, vmax,
    method _annotate_heatmap (line 249) | def _annotate_heatmap(self, ax, mesh):
    method _skip_ticks (line 265) | def _skip_ticks(self, labels, tickevery):
    method _auto_ticks (line 278) | def _auto_ticks(self, ax, labels, axis):
    method plot (line 294) | def plot(self, ax, cax, kws):
  function heatmap (line 355) | def heatmap(
  class _DendrogramPlotter (line 463) | class _DendrogramPlotter:
    method __init__ (line 466) | def __init__(self, data, linkage, metric, method, axis, label, rotate):
    method _calculate_linkage_scipy (line 529) | def _calculate_linkage_scipy(self):
    method _calculate_linkage_fastcluster (line 534) | def _calculate_linkage_fastcluster(self):
    method calculated_linkage (line 552) | def calculated_linkage(self):
    method calculate_dendrogram (line 564) | def calculate_dendrogram(self):
    method reordered_ind (line 581) | def reordered_ind(self):
    method plot (line 585) | def plot(self, ax, tree_kws):
  function dendrogram (line 642) | def dendrogram(
  class ClusterGrid (line 696) | class ClusterGrid(Grid):
    method __init__ (line 698) | def __init__(self, data, pivot_kws=None, z_score=None, standard_scale=...
    method _preprocess_colors (line 774) | def _preprocess_colors(self, data, colors, axis):
    method format_data (line 816) | def format_data(self, data, pivot_kws, z_score=None,
    method z_score (line 837) | def z_score(data2d, axis=1):
    method standard_scale (line 867) | def standard_scale(data2d, axis=1):
    method dim_ratios (line 900) | def dim_ratios(self, colors, dendrogram_ratio, colors_ratio):
    method color_list_to_matrix_and_cmap (line 919) | def color_list_to_matrix_and_cmap(colors, ind, axis=0):
    method plot_dendrograms (line 970) | def plot_dendrograms(self, row_cluster, col_cluster, metric, method,
    method plot_colors (line 995) | def plot_colors(self, xind, yind, **kws):
    method plot_matrix (line 1060) | def plot_matrix(self, colorbar_kws, xind, yind, **kws):
    method plot (line 1117) | def plot(self, metric, method, colorbar_kws, row_cluster, col_cluster,
  function clustermap (line 1146) | def clustermap(

FILE: seaborn/miscplot.py
  function palplot (line 9) | def palplot(pal, size=1):
  function dogplot (line 33) | def dogplot(*_, **__):

FILE: seaborn/palettes.py
  class _ColorPalette (line 61) | class _ColorPalette(list):
    method __enter__ (line 63) | def __enter__(self):
    method __exit__ (line 70) | def __exit__(self, *args):
    method as_hex (line 75) | def as_hex(self):
    method _repr_html_ (line 80) | def _repr_html_(self):
  function _patch_colormap_display (line 94) | def _patch_colormap_display():
  function color_palette (line 122) | def color_palette(palette=None, n_colors=None, desat=None, as_cmap=False):
  function hls_palette (line 258) | def hls_palette(n_colors=6, h=.01, l=.6, s=.65, as_cmap=False):  # noqa
  function husl_palette (line 312) | def husl_palette(n_colors=6, h=.01, s=.9, l=.65, as_cmap=False):  # noqa
  function mpl_palette (line 366) | def mpl_palette(name, n_colors=6, as_cmap=False):
  function _color_to_rgb (line 420) | def _color_to_rgb(color, input):
  function dark_palette (line 433) | def dark_palette(color, n_colors=6, reverse=False, as_cmap=False, input=...
  function light_palette (line 484) | def light_palette(color, n_colors=6, reverse=False, as_cmap=False, input...
  function diverging_palette (line 532) | def diverging_palette(h_neg, h_pos, s=75, l=50, sep=1, n=6,  # noqa
  function blend_palette (line 581) | def blend_palette(colors, n_colors=6, as_cmap=False, input="rgb"):
  function xkcd_palette (line 612) | def xkcd_palette(colors):
  function crayon_palette (line 638) | def crayon_palette(colors):
  function cubehelix_palette (line 665) | def cubehelix_palette(n_colors=6, start=0, rot=.4, gamma=1.0, hue=0.8,
  function _parse_cubehelix_args (line 764) | def _parse_cubehelix_args(argstr):
  function set_color_codes (line 799) | def set_color_codes(palette="deep"):

FILE: seaborn/rcmod.py
  function set_theme (line 82) | def set_theme(context="notebook", style="darkgrid", palette="deep",
  function set (line 126) | def set(*args, **kwargs):
  function reset_defaults (line 135) | def reset_defaults():
  function reset_orig (line 140) | def reset_orig():
  function axes_style (line 146) | def axes_style(style=None, rc=None):
  function set_style (line 303) | def set_style(style=None, rc=None):
  function plotting_context (line 335) | def plotting_context(context=None, font_scale=1, rc=None):
  function set_context (line 435) | def set_context(context=None, font_scale=1, rc=None):
  class _RCAesthetics (line 472) | class _RCAesthetics(dict):
    method __enter__ (line 473) | def __enter__(self):
    method __exit__ (line 478) | def __exit__(self, exc_type, exc_value, exc_tb):
    method __call__ (line 481) | def __call__(self, func):
  class _AxesStyle (line 489) | class _AxesStyle(_RCAesthetics):
  class _PlottingContext (line 495) | class _PlottingContext(_RCAesthetics):
  function set_palette (line 501) | def set_palette(palette, n_colors=None, desat=None, color_codes=False):

FILE: seaborn/regression.py
  class _LinearPlotter (line 25) | class _LinearPlotter:
    method establish_variables (line 32) | def establish_variables(self, data, **kws):
    method dropna (line 56) | def dropna(self, *vars):
    method plot (line 66) | def plot(self, ax):
  class _RegressionPlotter (line 70) | class _RegressionPlotter(_LinearPlotter):
    method __init__ (line 76) | def __init__(self, x, y, data=None, x_estimator=None, x_bins=None,
    method scatter_data (line 137) | def scatter_data(self):
    method estimate_data (line 154) | def estimate_data(self):
    method _check_statsmodels (line 188) | def _check_statsmodels(self):
    method fit_regression (line 196) | def fit_regression(self, ax=None, x_range=None, grid=None):
    method fit_fast (line 239) | def fit_fast(self, grid):
    method fit_poly (line 258) | def fit_poly(self, grid, order):
    method fit_statsmodels (line 275) | def fit_statsmodels(self, grid, model, **kwargs):
    method fit_lowess (line 306) | def fit_lowess(self):
    method fit_logx (line 312) | def fit_logx(self, grid):
    method bin_predictor (line 333) | def bin_predictor(self, bins):
    method regress_out (line 347) | def regress_out(self, a, b):
    method plot (line 356) | def plot(self, ax, scatter_kws, line_kws):
    method scatterplot (line 392) | def scatterplot(self, ax, kws):
    method lineplot (line 426) | def lineplot(self, ax, kws):
  function lmplot (line 580) | def lmplot(
  function regplot (line 761) | def regplot(
  function residplot (line 864) | def residplot(

FILE: seaborn/relational.py
  class _RelationalPlotter (line 188) | class _RelationalPlotter(VectorPlotter):
  class _LinePlotter (line 198) | class _LinePlotter(_RelationalPlotter):
    method __init__ (line 202) | def __init__(
    method plot (line 229) | def plot(self, ax, kws):
  class _ScatterPlotter (line 383) | class _ScatterPlotter(_RelationalPlotter):
    method __init__ (line 387) | def __init__(self, *, data=None, variables={}, legend=None):
    method plot (line 400) | def plot(self, ax, kws):
  function lineplot (line 471) | def lineplot(
  function scatterplot (line 606) | def scatterplot(
  function relplot (line 700) | def relplot(

FILE: seaborn/utils.py
  function ci_to_errsize (line 28) | def ci_to_errsize(cis, heights):
  function _draw_figure (line 58) | def _draw_figure(fig):
  function _default_color (line 69) | def _default_color(method, hue, color, kws, saturation=1):
  function desaturate (line 147) | def desaturate(color, prop):
  function saturate (line 186) | def saturate(color):
  function set_hls_values (line 203) | def set_hls_values(color, h=None, l=None, s=None):  # noqa
  function axlabel (line 230) | def axlabel(xlabel, ylabel, **kwargs):
  function remove_na (line 243) | def remove_na(vector):
  function get_color_cycle (line 260) | def get_color_cycle():
  function despine (line 277) | def despine(fig=None, ax=None, top=True, right=True, left=False,
  function move_legend (line 379) | def move_legend(obj, loc, **kwargs):
  function _kde_support (line 478) | def _kde_support(data, bw, gridsize, cut, clip):
  function ci (line 487) | def ci(a, which=95, axis=None):
  function get_dataset_names (line 493) | def get_dataset_names():
  function get_data_home (line 506) | def get_data_home(data_home=None):
  function load_dataset (line 524) | def load_dataset(name, cache=True, data_home=None, **kws):
  function axis_ticklabels_overlap (line 632) | def axis_ticklabels_overlap(labels):
  function axes_ticklabels_overlap (line 656) | def axes_ticklabels_overlap(ax):
  function locator_to_legend_entries (line 673) | def locator_to_legend_entries(locator, limits, dtype):
  function relative_luminance (line 699) | def relative_luminance(color):
  function to_utf8 (line 721) | def to_utf8(obj):
  function _check_argument (line 750) | def _check_argument(param, options, value, prefix=False):
  function _assign_default_kwargs (line 764) | def _assign_default_kwargs(kws, call_func, source_func):
  function adjust_legend_subtitles (line 783) | def adjust_legend_subtitles(legend):
  function _deprecate_ci (line 803) | def _deprecate_ci(errorbar, ci):
  function _get_transform_functions (line 828) | def _get_transform_functions(ax, axis):
  function _disable_autolayout (line 836) | def _disable_autolayout():
  function _version_predates (line 854) | def _version_predates(lib: ModuleType, version: str) -> bool:
  function _scatter_legend_artist (line 859) | def _scatter_legend_artist(**kws):
  function _get_patch_legend_artist (line 883) | def _get_patch_legend_artist(fill):

FILE: seaborn/widgets.py
  function interact (line 8) | def interact(f):
  function _init_mutable_colormap (line 22) | def _init_mutable_colormap():
  function _update_lut (line 31) | def _update_lut(cmap, colors):
  function _show_cmap (line 37) | def _show_cmap(cmap):
  function choose_colorbrewer_palette (line 47) | def choose_colorbrewer_palette(data_type, as_cmap=False):
  function choose_dark_palette (line 143) | def choose_dark_palette(input="husl", as_cmap=False):
  function choose_light_palette (line 228) | def choose_light_palette(input="husl", as_cmap=False):
  function choose_diverging_palette (line 313) | def choose_diverging_palette(as_cmap=False):
  function choose_cubehelix_palette (line 372) | def choose_cubehelix_palette(as_cmap=False):

FILE: tests/_core/test_data.py
  class TestPlotData (line 15) | class TestPlotData:
    method long_variables (line 18) | def long_variables(self):
    method test_named_vectors (line 22) | def test_named_vectors(self, long_df, long_variables):
    method test_named_and_given_vectors (line 31) | def test_named_and_given_vectors(self, long_df, long_variables):
    method test_index_as_variable (line 50) | def test_index_as_variable(self, long_df, long_variables):
    method test_multiindex_as_variables (line 59) | def test_multiindex_as_variables(self, long_df, long_variables):
    method test_int_as_variable_key (line 70) | def test_int_as_variable_key(self, rng):
    method test_int_as_variable_value (line 81) | def test_int_as_variable_value(self, long_df):
    method test_tuple_as_variable_key (line 88) | def test_tuple_as_variable_key(self, rng):
    method test_dict_as_data (line 99) | def test_dict_as_data(self, long_dict, long_variables):
    method test_vectors_various_types (line 110) | def test_vectors_various_types(self, long_df, long_variables, vector_t...
    method test_none_as_variable_value (line 134) | def test_none_as_variable_value(self, long_df):
    method test_frame_and_vector_mismatched_lengths (line 140) | def test_frame_and_vector_mismatched_lengths(self, long_df):
    method test_empty_data_input (line 149) | def test_empty_data_input(self, arg):
    method test_index_alignment_series_to_dataframe (line 160) | def test_index_alignment_series_to_dataframe(self):
    method test_index_alignment_between_series (line 178) | def test_index_alignment_between_series(self):
    method test_key_not_in_data_raises (line 196) | def test_key_not_in_data_raises(self, long_df):
    method test_key_with_no_data_raises (line 204) | def test_key_with_no_data_raises(self):
    method test_data_vector_different_lengths_raises (line 212) | def test_data_vector_different_lengths_raises(self, long_df):
    method test_undefined_variables_raise (line 219) | def test_undefined_variables_raise(self, long_df):
    method test_contains_operation (line 230) | def test_contains_operation(self, long_df):
    method test_join_add_variable (line 237) | def test_join_add_variable(self, long_df):
    method test_join_replace_variable (line 250) | def test_join_replace_variable(self, long_df):
    method test_join_remove_variable (line 266) | def test_join_remove_variable(self, long_df):
    method test_join_all_operations (line 279) | def test_join_all_operations(self, long_df):
    method test_join_all_operations_same_data (line 294) | def test_join_all_operations_same_data(self, long_df):
    method test_join_add_variable_new_data (line 309) | def test_join_add_variable_new_data(self, long_df):
    method test_join_replace_variable_new_data (line 324) | def test_join_replace_variable_new_data(self, long_df):
    method test_join_add_variable_different_index (line 342) | def test_join_add_variable_different_index(self, long_df):
    method test_join_replace_variable_different_index (line 362) | def test_join_replace_variable_different_index(self, long_df):
    method test_join_subset_data_inherit_variables (line 381) | def test_join_subset_data_inherit_variables(self, long_df):
    method test_join_multiple_inherits_from_orig (line 392) | def test_join_multiple_inherits_from_orig(self, rng):
    method test_bad_type (line 401) | def test_bad_type(self, flat_list):
    method test_data_interchange (line 411) | def test_data_interchange(self, mock_long_df, long_df):
    method test_data_interchange_failure (line 422) | def test_data_interchange_failure(self, mock_long_df):
    method test_data_interchange_support_test (line 432) | def test_data_interchange_support_test(self, mock_long_df):

FILE: tests/_core/test_groupby.py
  function df (line 12) | def df():
  function test_init_from_list (line 26) | def test_init_from_list():
  function test_init_from_dict (line 31) | def test_init_from_dict():
  function test_init_requires_order (line 37) | def test_init_requires_order():
  function test_at_least_one_grouping_variable_required (line 43) | def test_at_least_one_grouping_variable_required(df):
  function test_agg_one_grouper (line 49) | def test_agg_one_grouper(df):
  function test_agg_two_groupers (line 58) | def test_agg_two_groupers(df):
  function test_agg_two_groupers_ordered (line 68) | def test_agg_two_groupers_ordered(df):
  function test_apply_no_grouper (line 83) | def test_apply_no_grouper(df):
  function test_apply_one_grouper (line 92) | def test_apply_one_grouper(df):
  function test_apply_mutate_columns (line 102) | def test_apply_mutate_columns(df):
  function test_apply_replace_columns (line 121) | def test_apply_replace_columns(df):

FILE: tests/_core/test_moves.py
  class MoveFixtures (line 16) | class MoveFixtures:
    method df (line 19) | def df(self, rng):
    method toy_df (line 33) | def toy_df(self):
    method toy_df_widths (line 45) | def toy_df_widths(self, toy_df):
    method toy_df_facets (line 51) | def toy_df_facets(self):
  class TestJitter (line 64) | class TestJitter(MoveFixtures):
    method get_groupby (line 66) | def get_groupby(self, data, orient):
    method check_same (line 71) | def check_same(self, res, df, *cols):
    method check_pos (line 75) | def check_pos(self, res, df, var, limit):
    method test_default (line 81) | def test_default(self, df):
    method test_width (line 90) | def test_width(self, df):
    method test_x (line 99) | def test_x(self, df):
    method test_y (line 108) | def test_y(self, df):
    method test_seed (line 117) | def test_seed(self, df):
  class TestDodge (line 128) | class TestDodge(MoveFixtures):
    method test_default (line 132) | def test_default(self, toy_df):
    method test_fill (line 141) | def test_fill(self, toy_df):
    method test_drop (line 150) | def test_drop(self, toy_df):
    method test_gap (line 159) | def test_gap(self, toy_df):
    method test_widths_default (line 168) | def test_widths_default(self, toy_df_widths):
    method test_widths_fill (line 177) | def test_widths_fill(self, toy_df_widths):
    method test_widths_drop (line 186) | def test_widths_drop(self, toy_df_widths):
    method test_faceted_default (line 195) | def test_faceted_default(self, toy_df_facets):
    method test_faceted_fill (line 204) | def test_faceted_fill(self, toy_df_facets):
    method test_faceted_drop (line 213) | def test_faceted_drop(self, toy_df_facets):
    method test_orient (line 222) | def test_orient(self, toy_df):
    method test_single_semantic (line 236) | def test_single_semantic(self, df, grp):
    method test_two_semantics (line 254) | def test_two_semantics(self, df):
  class TestStack (line 273) | class TestStack(MoveFixtures):
    method test_basic (line 275) | def test_basic(self, toy_df):
    method test_faceted (line 284) | def test_faceted(self, toy_df_facets):
    method test_misssing_data (line 293) | def test_misssing_data(self, toy_df):
    method test_baseline_homogeneity_check (line 304) | def test_baseline_homogeneity_check(self, toy_df):
  class TestShift (line 314) | class TestShift(MoveFixtures):
    method test_default (line 316) | def test_default(self, toy_df):
    method test_moves (line 324) | def test_moves(self, toy_df, x, y):
  class TestNorm (line 332) | class TestNorm(MoveFixtures):
    method test_default_no_groups (line 335) | def test_default_no_groups(self, df, orient):
    method test_default_groups (line 343) | def test_default_groups(self, df, orient):
    method test_sum (line 351) | def test_sum(self, df):
    method test_where (line 357) | def test_where(self, df):
    method test_percent (line 363) | def test_percent(self, df):

FILE: tests/_core/test_plot.py
  function assert_gridspec_shape (line 36) | def assert_gridspec_shape(ax, nrows=1, ncols=1):
  class MockMark (line 43) | class MockMark(Mark):
    method __init__ (line 47) | def __init__(self, *args, **kwargs):
    method _plot (line 57) | def _plot(self, split_gen, scales, orient):
    method _legend_artist (line 68) | def _legend_artist(self, variables, value, scales):
  class TestInit (line 76) | class TestInit:
    method test_empty (line 78) | def test_empty(self):
    method test_data_only (line 84) | def test_data_only(self, long_df):
    method test_df_and_named_variables (line 90) | def test_df_and_named_variables(self, long_df):
    method test_df_and_mixed_variables (line 99) | def test_df_and_mixed_variables(self, long_df):
    method test_vector_variables_only (line 111) | def test_vector_variables_only(self, long_df):
    method test_vector_variables_no_index (line 120) | def test_vector_variables_no_index(self, long_df):
    method test_data_only_named (line 130) | def test_data_only_named(self, long_df):
    method test_positional_and_named_data (line 136) | def test_positional_and_named_data(self, long_df):
    method test_positional_and_named_xy (line 143) | def test_positional_and_named_xy(self, long_df, var):
    method test_positional_data_x_y (line 149) | def test_positional_data_x_y(self, long_df):
    method test_positional_x_y (line 155) | def test_positional_x_y(self, long_df):
    method test_positional_data_x (line 161) | def test_positional_data_x(self, long_df):
    method test_positional_x (line 167) | def test_positional_x(self, long_df):
    method test_positional_interchangeable_dataframe (line 177) | def test_positional_interchangeable_dataframe(self, mock_long_df, long...
    method test_positional_too_many (line 182) | def test_positional_too_many(self, long_df):
    method test_unknown_keywords (line 188) | def test_unknown_keywords(self, long_df):
  class TestLayerAddition (line 195) | class TestLayerAddition:
    method test_without_data (line 197) | def test_without_data(self, long_df):
    method test_with_new_variable_by_name (line 203) | def test_with_new_variable_by_name(self, long_df):
    method test_with_new_variable_by_vector (line 211) | def test_with_new_variable_by_vector(self, long_df):
    method test_with_late_data_definition (line 219) | def test_with_late_data_definition(self, long_df):
    method test_with_new_data_definition (line 227) | def test_with_new_data_definition(self, long_df):
    method test_drop_variable (line 239) | def test_drop_variable(self, long_df):
    method test_stat_default (line 247) | def test_stat_default(self):
    method test_stat_nondefault (line 256) | def test_stat_nondefault(self):
    method test_orient (line 272) | def test_orient(self, arg, expected):
    method test_variable_list (line 291) | def test_variable_list(self, long_df):
    method test_type_checks (line 315) | def test_type_checks(self):
  class TestScaling (line 339) | class TestScaling:
    method test_inference (line 341) | def test_inference(self, long_df):
    method test_inference_from_layer_data (line 348) | def test_inference_from_layer_data(self):
    method test_inference_joins (line 353) | def test_inference_joins(self):
    method test_inferred_categorical_converter (line 363) | def test_inferred_categorical_converter(self):
    method test_explicit_categorical_converter (line 369) | def test_explicit_categorical_converter(self):
    method test_categorical_as_datetime (line 376) | def test_categorical_as_datetime(self):
    method test_faceted_log_scale (line 383) | def test_faceted_log_scale(self):
    method test_paired_single_log_scale (line 390) | def test_paired_single_log_scale(self):
    method test_paired_with_common_fallback (line 400) | def test_paired_with_common_fallback(self):
    method test_log_scale_name (line 411) | def test_log_scale_name(self):
    method test_mark_data_log_transform_is_inverted (line 418) | def test_mark_data_log_transform_is_inverted(self, long_df):
    method test_mark_data_log_transfrom_with_stat (line 425) | def test_mark_data_log_transfrom_with_stat(self, long_df):
    method test_mark_data_from_categorical (line 451) | def test_mark_data_from_categorical(self, long_df):
    method test_mark_data_from_datetime (line 461) | def test_mark_data_from_datetime(self, long_df):
    method test_computed_var_ticks (line 470) | def test_computed_var_ticks(self, long_df):
    method test_computed_var_transform (line 483) | def test_computed_var_transform(self, long_df):
    method test_explicit_range_with_axis_scaling (line 495) | def test_explicit_range_with_axis_scaling(self):
    method test_derived_range_with_axis_scaling (line 504) | def test_derived_range_with_axis_scaling(self):
    method test_facet_categories (line 516) | def test_facet_categories(self):
    method test_facet_categories_unshared (line 526) | def test_facet_categories_unshared(self):
    method test_facet_categories_single_dim_shared (line 542) | def test_facet_categories_single_dim_shared(self):
    method test_pair_categories (line 569) | def test_pair_categories(self):
    method test_pair_categories_shared (line 582) | def test_pair_categories_shared(self):
    method test_identity_mapping_linewidth (line 595) | def test_identity_mapping_linewidth(self):
    method test_pair_single_coordinate_stat_orient (line 603) | def test_pair_single_coordinate_stat_orient(self, long_df):
    method test_inferred_nominal_passed_to_stat (line 614) | def test_inferred_nominal_passed_to_stat(self):
    method test_identity_mapping_color_strings (line 630) | def test_identity_mapping_color_strings(self):
    method test_identity_mapping_color_tuples (line 639) | def test_identity_mapping_color_tuples(self):
    method test_undefined_variable_raises (line 651) | def test_undefined_variable_raises(self):
    method test_nominal_x_axis_tweaks (line 658) | def test_nominal_x_axis_tweaks(self):
    method test_nominal_y_axis_tweaks (line 669) | def test_nominal_y_axis_tweaks(self):
  class TestPlotting (line 681) | class TestPlotting:
    method test_matplotlib_object_creation (line 683) | def test_matplotlib_object_creation(self):
    method test_empty (line 690) | def test_empty(self):
    method test_no_orient_variance (line 697) | def test_no_orient_variance(self):
    method test_single_split_single_layer (line 705) | def test_single_split_single_layer(self, long_df):
    method test_single_split_multi_layer (line 716) | def test_single_split_multi_layer(self, long_df):
    method check_splits_single_var (line 730) | def check_splits_single_var(
    method check_splits_multi_vars (line 743) | def check_splits_multi_vars(
    method test_one_grouping_variable (line 769) | def test_one_grouping_variable(self, long_df, split_var):
    method test_two_grouping_variables (line 784) | def test_two_grouping_variables(self, long_df):
    method test_specified_width (line 802) | def test_specified_width(self, long_df):
    method test_facets_no_subgroups (line 808) | def test_facets_no_subgroups(self, long_df):
    method test_facets_one_subgroup (line 823) | def test_facets_one_subgroup(self, long_df):
    method test_layer_specific_facet_disabling (line 848) | def test_layer_specific_facet_disabling(self, long_df):
    method test_paired_variables (line 863) | def test_paired_variables(self, long_df):
    method test_paired_one_dimension (line 877) | def test_paired_one_dimension(self, long_df):
    method test_paired_variables_one_subset (line 887) | def test_paired_variables_one_subset(self, long_df):
    method test_paired_and_faceted (line 906) | def test_paired_and_faceted(self, long_df):
    method test_theme_default (line 923) | def test_theme_default(self):
    method test_theme_params (line 928) | def test_theme_params(self):
    method test_theme_error (line 934) | def test_theme_error(self):
    method test_theme_validation (line 940) | def test_theme_validation(self):
    method test_stat (line 950) | def test_stat(self, long_df):
    method test_move (line 962) | def test_move(self, long_df):
    method test_stat_and_move (line 973) | def test_stat_and_move(self, long_df):
    method test_stat_log_scale (line 981) | def test_stat_log_scale(self, long_df):
    method test_move_log_scale (line 995) | def test_move_log_scale(self, long_df):
    method test_multi_move (line 1003) | def test_multi_move(self, long_df):
    method test_multi_move_with_pairing (line 1010) | def test_multi_move_with_pairing(self, long_df):
    method test_move_with_range (line 1017) | def test_move_with_range(self, long_df):
    method test_methods_clone (line 1031) | def test_methods_clone(self, long_df):
    method test_default_is_no_pyplot (line 1040) | def test_default_is_no_pyplot(self):
    method test_with_pyplot (line 1047) | def test_with_pyplot(self):
    method test_show (line 1055) | def test_show(self):
    method test_save (line 1074) | def test_save(self):
    method test_layout_size (line 1088) | def test_layout_size(self):
    method test_layout_extent (line 1098) | def test_layout_extent(self):
    method test_constrained_layout_extent (line 1107) | def test_constrained_layout_extent(self):
    method test_base_layout_extent (line 1112) | def test_base_layout_extent(self):
    method test_on_axes (line 1120) | def test_on_axes(self):
    method test_on_figure (line 1129) | def test_on_figure(self, facet):
    method test_on_subfigure (line 1141) | def test_on_subfigure(self, facet):
    method test_on_type_check (line 1153) | def test_on_type_check(self):
    method test_on_axes_with_subplots_error (line 1159) | def test_on_axes_with_subplots_error(self):
    method test_on_layout_algo_default (line 1175) | def test_on_layout_algo_default(self):
    method test_on_layout_algo_spec (line 1189) | def test_on_layout_algo_spec(self):
    method test_axis_labels_from_constructor (line 1196) | def test_axis_labels_from_constructor(self, long_df):
    method test_axis_labels_from_layer (line 1206) | def test_axis_labels_from_layer(self, long_df):
    method test_axis_labels_are_first_name (line 1219) | def test_axis_labels_are_first_name(self, long_df):
    method test_limits (line 1231) | def test_limits(self, long_df):
    method test_labels_axis (line 1248) | def test_labels_axis(self, long_df):
    method test_labels_legend (line 1260) | def test_labels_legend(self, long_df):
    method test_labels_facets (line 1272) | def test_labels_facets(self):
    method test_title_single (line 1281) | def test_title_single(self):
    method test_title_facet_function (line 1287) | def test_title_facet_function(self):
  class TestExceptions (line 1301) | class TestExceptions:
    method test_scale_setup (line 1303) | def test_scale_setup(self):
    method test_coordinate_scaling (line 1315) | def test_coordinate_scaling(self):
    method test_semantic_scaling (line 1327) | def test_semantic_scaling(self):
  class TestFacetInterface (line 1349) | class TestFacetInterface:
    method dim (line 1352) | def dim(self, request):
    method reorder (line 1356) | def reorder(self, request):
    method check_facet_results_1d (line 1363) | def check_facet_results_1d(self, p, df, dim, key, order=None):
    method test_1d (line 1378) | def test_1d(self, long_df, dim):
    method test_1d_as_vector (line 1384) | def test_1d_as_vector(self, long_df, dim):
    method test_1d_with_order (line 1390) | def test_1d_with_order(self, long_df, dim, reorder):
    method check_facet_results_2d (line 1397) | def check_facet_results_2d(self, p, df, variables, order=None):
    method test_2d (line 1417) | def test_2d(self, long_df):
    method test_2d_with_order (line 1423) | def test_2d_with_order(self, long_df, reorder):
    method test_layout_algo (line 1435) | def test_layout_algo(self, algo):
    method test_axis_sharing (line 1453) | def test_axis_sharing(self, long_df):
    method test_unshared_spacing (line 1488) | def test_unshared_spacing(self):
    method test_col_wrapping (line 1499) | def test_col_wrapping(self):
    method test_row_wrapping (line 1510) | def test_row_wrapping(self):
  class TestPairInterface (line 1522) | class TestPairInterface:
    method check_pair_grid (line 1524) | def check_pair_grid(self, p, x, y):
    method test_all_numeric (line 1536) | def test_all_numeric(self, long_df, vector_type):
    method test_single_variable_key_raises (line 1542) | def test_single_variable_key_raises(self, long_df):
    method test_single_dimension (line 1550) | def test_single_dimension(self, long_df, dim):
    method test_non_cross (line 1558) | def test_non_cross(self, long_df):
    method test_list_of_vectors (line 1576) | def test_list_of_vectors(self, long_df):
    method test_with_no_variables (line 1584) | def test_with_no_variables(self, long_df):
    method test_with_facets (line 1589) | def test_with_facets(self, long_df):
    method test_error_on_facet_overlap (line 1609) | def test_error_on_facet_overlap(self, long_df, variables):
    method test_error_on_wrap_overlap (line 1618) | def test_error_on_wrap_overlap(self, long_df, variables):
    method test_axis_sharing (line 1630) | def test_axis_sharing(self, long_df):
    method test_axis_sharing_with_facets (line 1656) | def test_axis_sharing_with_facets(self, long_df):
    method test_x_wrapping (line 1675) | def test_x_wrapping(self, long_df):
    method test_y_wrapping (line 1688) | def test_y_wrapping(self, long_df):
    method test_non_cross_wrapping (line 1706) | def test_non_cross_wrapping(self, long_df):
    method test_cross_mismatched_lengths (line 1721) | def test_cross_mismatched_lengths(self, long_df):
    method test_orient_inference (line 1727) | def test_orient_inference(self, long_df):
    method test_computed_coordinate_orient_inference (line 1745) | def test_computed_coordinate_orient_inference(self, long_df):
    method test_two_variables_single_order_error (line 1756) | def test_two_variables_single_order_error(self, long_df):
    method test_limits (line 1763) | def test_limits(self, long_df):
    method test_labels (line 1770) | def test_labels(self, long_df):
  class TestLabelVisibility (line 1783) | class TestLabelVisibility:
    method has_xaxis_labels (line 1785) | def has_xaxis_labels(self, ax):
    method test_single_subplot (line 1796) | def test_single_subplot(self, long_df):
    method test_1d_column (line 1810) | def test_1d_column(self, long_df, facet_kws, pair_kws):
    method test_1d_row (line 1833) | def test_1d_row(self, long_df, facet_kws, pair_kws):
    method test_1d_column_wrapped (line 1853) | def test_1d_column_wrapped(self):
    method test_1d_row_wrapped (line 1878) | def test_1d_row_wrapped(self):
    method test_1d_column_wrapped_non_cross (line 1903) | def test_1d_column_wrapped_non_cross(self, long_df):
    method test_2d (line 1917) | def test_2d(self):
    method test_2d_unshared (line 1942) | def test_2d_unshared(self):
  class TestLegend (line 1973) | class TestLegend:
    method xy (line 1976) | def xy(self):
    method test_single_layer_single_variable (line 1979) | def test_single_layer_single_variable(self, xy):
    method test_single_layer_common_variable (line 1997) | def test_single_layer_common_variable(self, xy):
    method test_single_layer_common_unnamed_variable (line 2016) | def test_single_layer_common_unnamed_variable(self, xy):
    method test_single_layer_multi_variable (line 2036) | def test_single_layer_multi_variable(self, xy):
    method test_multi_layer_single_variable (line 2059) | def test_multi_layer_single_variable(self, xy):
    method test_multi_layer_multi_variable (line 2080) | def test_multi_layer_multi_variable(self, xy):
    method test_multi_layer_different_artists (line 2102) | def test_multi_layer_different_artists(self, xy):
    method test_three_layers (line 2126) | def test_three_layers(self, xy):
    method test_identity_scale_ignored (line 2140) | def test_identity_scale_ignored(self, xy):
    method test_suppression_in_add_method (line 2146) | def test_suppression_in_add_method(self, xy):
    method test_anonymous_title (line 2152) | def test_anonymous_title(self, xy):
    method test_legendless_mark (line 2158) | def test_legendless_mark(self, xy):
    method test_legend_has_no_offset (line 2167) | def test_legend_has_no_offset(self, xy):
    method test_layer_legend (line 2176) | def test_layer_legend(self, xy):
    method test_layer_legend_with_scale_legend (line 2184) | def test_layer_legend_with_scale_legend(self, xy):
    method test_layer_legend_title (line 2195) | def test_layer_legend_title(self, xy):
  class TestDefaultObject (line 2201) | class TestDefaultObject:
    method test_default_repr (line 2203) | def test_default_repr(self):
  class TestThemeConfig (line 2208) | class TestThemeConfig:
    method reset_config (line 2211) | def reset_config(self):
    method test_default (line 2215) | def test_default(self):
    method test_setitem (line 2222) | def test_setitem(self):
    method test_update (line 2230) | def test_update(self):
    method test_reset (line 2238) | def test_reset(self):
    method test_copy (line 2247) | def test_copy(self):
    method test_html_repr (line 2255) | def test_html_repr(self):
  class TestDisplayConfig (line 2265) | class TestDisplayConfig:
    method reset_config (line 2268) | def reset_config(self):
    method test_png_format (line 2272) | def test_png_format(self):
    method test_svg_format (line 2288) | def test_svg_format(self):
    method test_png_scaling (line 2303) | def test_png_scaling(self):
    method test_svg_scaling (line 2318) | def test_svg_scaling(self):
    method test_png_hidpi (line 2337) | def test_png_hidpi(self):

FILE: tests/_core/test_properties.py
  class DataFixtures (line 28) | class DataFixtures:
    method num_vector (line 31) | def num_vector(self, long_df):
    method num_order (line 35) | def num_order(self, num_vector):
    method cat_vector (line 39) | def cat_vector(self, long_df):
    method cat_order (line 43) | def cat_order(self, cat_vector):
    method dt_num_vector (line 47) | def dt_num_vector(self, long_df):
    method dt_cat_vector (line 51) | def dt_cat_vector(self, long_df):
    method bool_vector (line 55) | def bool_vector(self, long_df):
    method vectors (line 59) | def vectors(self, num_vector, cat_vector, bool_vector):
  class TestCoordinate (line 63) | class TestCoordinate(DataFixtures):
    method test_bad_scale_arg_str (line 65) | def test_bad_scale_arg_str(self, num_vector):
    method test_bad_scale_arg_type (line 71) | def test_bad_scale_arg_type(self, cat_vector):
  class TestColor (line 78) | class TestColor(DataFixtures):
    method assert_same_rgb (line 80) | def assert_same_rgb(self, a, b):
    method test_nominal_default_palette (line 83) | def test_nominal_default_palette(self, cat_vector, cat_order):
    method test_nominal_default_palette_large (line 92) | def test_nominal_default_palette_large(self):
    method test_nominal_named_palette (line 101) | def test_nominal_named_palette(self, cat_vector, cat_order):
    method test_nominal_list_palette (line 111) | def test_nominal_list_palette(self, cat_vector, cat_order):
    method test_nominal_dict_palette (line 120) | def test_nominal_dict_palette(self, cat_vector, cat_order):
    method test_nominal_dict_with_missing_keys (line 131) | def test_nominal_dict_with_missing_keys(self, cat_vector, cat_order):
    method test_nominal_list_too_short (line 137) | def test_nominal_list_too_short(self, cat_vector, cat_order):
    method test_nominal_list_too_long (line 145) | def test_nominal_list_too_long(self, cat_vector, cat_order):
    method test_continuous_default_palette (line 153) | def test_continuous_default_palette(self, num_vector):
    method test_continuous_named_palette (line 159) | def test_continuous_named_palette(self, num_vector):
    method test_continuous_tuple_palette (line 166) | def test_continuous_tuple_palette(self, num_vector):
    method test_continuous_callable_palette (line 173) | def test_continuous_callable_palette(self, num_vector):
    method test_continuous_missing (line 179) | def test_continuous_missing(self):
    method test_bad_scale_values_continuous (line 185) | def test_bad_scale_values_continuous(self, num_vector):
    method test_bad_scale_values_nominal (line 190) | def test_bad_scale_values_nominal(self, cat_vector):
    method test_bad_inference_arg (line 195) | def test_bad_inference_arg(self, cat_vector):
    method test_default (line 204) | def test_default(self, data_type, scale_class, vectors):
    method test_default_numeric_data_category_dtype (line 209) | def test_default_numeric_data_category_dtype(self, num_vector):
    method test_default_binary_data (line 214) | def test_default_binary_data(self):
    method test_inference (line 235) | def test_inference(self, values, data_type, scale_class, vectors):
    method test_standardization (line 241) | def test_standardization(self):
  class ObjectPropertyBase (line 257) | class ObjectPropertyBase(DataFixtures):
    method assert_equal (line 259) | def assert_equal(self, a, b):
    method unpack (line 263) | def unpack(self, x):
    method test_default (line 267) | def test_default(self, data_type, vectors):
    method test_inference_list (line 273) | def test_inference_list(self, data_type, vectors):
    method test_inference_dict (line 280) | def test_inference_dict(self, data_type, vectors):
    method test_dict_missing (line 288) | def test_dict_missing(self, cat_vector):
    method test_mapping_default (line 299) | def test_mapping_default(self, data_type, vectors):
    method test_mapping_from_list (line 309) | def test_mapping_from_list(self, data_type, vectors):
    method test_mapping_from_dict (line 319) | def test_mapping_from_dict(self, data_type, vectors):
    method test_mapping_with_null_value (line 333) | def test_mapping_with_null_value(self, cat_vector):
    method test_unique_default_large_n (line 342) | def test_unique_default_large_n(self):
    method test_bad_scale_values (line 349) | def test_bad_scale_values(self, cat_vector):
  class TestMarker (line 356) | class TestMarker(ObjectPropertyBase):
    method assert_equal (line 362) | def assert_equal(self, a, b):
    method unpack (line 373) | def unpack(self, x):
  class TestLineStyle (line 382) | class TestLineStyle(ObjectPropertyBase):
    method test_bad_type (line 388) | def test_bad_type(self):
    method test_bad_style (line 394) | def test_bad_style(self):
    method test_bad_dashes (line 400) | def test_bad_dashes(self):
  class TestFill (line 407) | class TestFill(DataFixtures):
    method vectors (line 410) | def vectors(self):
    method cat_vector (line 419) | def cat_vector(self, vectors):
    method num_vector (line 423) | def num_vector(self, vectors):
    method test_default (line 427) | def test_default(self, data_type, vectors):
    method test_inference_list (line 434) | def test_inference_list(self, data_type, vectors):
    method test_inference_dict (line 442) | def test_inference_dict(self, data_type, vectors):
    method test_mapping_categorical_data (line 450) | def test_mapping_categorical_data(self, cat_vector):
    method test_mapping_numeric_data (line 455) | def test_mapping_numeric_data(self, num_vector):
    method test_mapping_list (line 460) | def test_mapping_list(self, cat_vector):
    method test_mapping_truthy_list (line 465) | def test_mapping_truthy_list(self, cat_vector):
    method test_mapping_dict (line 470) | def test_mapping_dict(self, cat_vector):
    method test_cycle_warning (line 476) | def test_cycle_warning(self):
    method test_values_error (line 482) | def test_values_error(self):
  class IntervalBase (line 489) | class IntervalBase(DataFixtures):
    method norm (line 491) | def norm(self, x):
    method test_default (line 499) | def test_default(self, data_type, scale_class, vectors):
    method test_inference (line 516) | def test_inference(self, arg, data_type, scale_class, vectors):
    method test_mapped_interval_numeric (line 523) | def test_mapped_interval_numeric(self, num_vector):
    method test_mapped_interval_categorical (line 528) | def test_mapped_interval_categorical(self, cat_vector):
    method test_bad_scale_values_numeric_data (line 534) | def test_bad_scale_values_numeric_data(self, num_vector):
    method test_bad_scale_values_categorical_data (line 547) | def test_bad_scale_values_categorical_data(self, cat_vector):
  class TestAlpha (line 555) | class TestAlpha(IntervalBase):
  class TestLineWidth (line 559) | class TestLineWidth(IntervalBase):
    method test_rcparam_default (line 562) | def test_rcparam_default(self):
  class TestEdgeWidth (line 568) | class TestEdgeWidth(IntervalBase):
    method test_rcparam_default (line 571) | def test_rcparam_default(self):
  class TestPointSize (line 577) | class TestPointSize(IntervalBase):
    method test_areal_scaling_numeric (line 580) | def test_areal_scaling_numeric(self, num_vector):
    method test_areal_scaling_categorical (line 589) | def test_areal_scaling_categorical(self, cat_vector):

FILE: tests/_core/test_rules.py
  function test_vartype_object (line 14) | def test_vartype_object():
  function test_variable_type (line 25) | def test_variable_type():
  function test_categorical_order (line 77) | def test_categorical_order():

FILE: tests/_core/test_scales.py
  class TestContinuous (line 31) | class TestContinuous:
    method x (line 34) | def x(self):
    method setup_ticks (line 37) | def setup_ticks(self, x, *args, **kwargs):
    method setup_labels (line 44) | def setup_labels(self, x, *args, **kwargs):
    method test_coordinate_defaults (line 52) | def test_coordinate_defaults(self, x):
    method test_coordinate_transform (line 57) | def test_coordinate_transform(self, x):
    method test_coordinate_transform_with_parameter (line 62) | def test_coordinate_transform_with_parameter(self, x):
    method test_coordinate_transform_error (line 67) | def test_coordinate_transform_error(self, x):
    method test_interval_defaults (line 73) | def test_interval_defaults(self, x):
    method test_interval_with_range (line 78) | def test_interval_with_range(self, x):
    method test_interval_with_norm (line 83) | def test_interval_with_norm(self, x):
    method test_interval_with_range_norm_and_transform (line 88) | def test_interval_with_range_norm_and_transform(self, x):
    method test_interval_with_bools (line 95) | def test_interval_with_bools(self):
    method test_color_defaults (line 101) | def test_color_defaults(self, x):
    method test_color_named_values (line 107) | def test_color_named_values(self, x):
    method test_color_tuple_values (line 113) | def test_color_tuple_values(self, x):
    method test_color_callable_values (line 119) | def test_color_callable_values(self, x):
    method test_color_with_norm (line 125) | def test_color_with_norm(self, x):
    method test_color_with_transform (line 131) | def test_color_with_transform(self, x):
    method test_tick_locator (line 138) | def test_tick_locator(self, x):
    method test_tick_locator_input_check (line 145) | def test_tick_locator_input_check(self, x):
    method test_tick_upto (line 151) | def test_tick_upto(self, x):
    method test_tick_every (line 157) | def test_tick_every(self, x):
    method test_tick_every_between (line 163) | def test_tick_every_between(self, x):
    method test_tick_at (line 171) | def test_tick_at(self, x):
    method test_tick_count (line 177) | def test_tick_count(self, x):
    method test_tick_count_between (line 183) | def test_tick_count_between(self, x):
    method test_tick_minor (line 190) | def test_tick_minor(self, x):
    method test_log_tick_default (line 201) | def test_log_tick_default(self, x):
    method test_log_tick_upto (line 209) | def test_log_tick_upto(self, x):
    method test_log_tick_count (line 216) | def test_log_tick_count(self, x):
    method test_log_tick_format_disabled (line 226) | def test_log_tick_format_disabled(self, x):
    method test_log_tick_every (line 235) | def test_log_tick_every(self, x):
    method test_symlog_tick_default (line 240) | def test_symlog_tick_default(self, x):
    method test_label_formatter (line 251) | def test_label_formatter(self, x):
    method test_label_like_pattern (line 259) | def test_label_like_pattern(self, x):
    method test_label_like_string (line 266) | def test_label_like_string(self, x):
    method test_label_like_function (line 273) | def test_label_like_function(self, x):
    method test_label_base (line 280) | def test_label_base(self, x):
    method test_label_unit (line 287) | def test_label_unit(self, x):
    method test_label_unit_with_sep (line 294) | def test_label_unit_with_sep(self, x):
    method test_label_empty_unit (line 301) | def test_label_empty_unit(self, x):
    method test_label_base_from_transform (line 308) | def test_label_base_from_transform(self, x):
    method test_label_type_checks (line 316) | def test_label_type_checks(self):
  class TestNominal (line 326) | class TestNominal:
    method x (line 329) | def x(self):
    method y (line 333) | def y(self):
    method test_coordinate_defaults (line 336) | def test_coordinate_defaults(self, x):
    method test_coordinate_with_order (line 341) | def test_coordinate_with_order(self, x):
    method test_coordinate_with_subset_order (line 346) | def test_coordinate_with_subset_order(self, x):
    method test_coordinate_axis (line 351) | def test_coordinate_axis(self, x):
    method test_coordinate_axis_with_order (line 359) | def test_coordinate_axis_with_order(self, x):
    method test_coordinate_axis_with_subset_order (line 368) | def test_coordinate_axis_with_subset_order(self, x):
    method test_coordinate_axis_with_category_dtype (line 377) | def test_coordinate_axis_with_category_dtype(self, x):
    method test_coordinate_numeric_data (line 387) | def test_coordinate_numeric_data(self, y):
    method test_coordinate_numeric_data_with_order (line 395) | def test_coordinate_numeric_data_with_order(self, y):
    method test_color_defaults (line 404) | def test_color_defaults(self, x):
    method test_color_named_palette (line 410) | def test_color_named_palette(self, x):
    method test_color_list_palette (line 417) | def test_color_list_palette(self, x):
    method test_color_dict_palette (line 423) | def test_color_dict_palette(self, x):
    method test_color_numeric_data (line 430) | def test_color_numeric_data(self, y):
    method test_color_numeric_with_order_subset (line 436) | def test_color_numeric_with_order_subset(self, y):
    method test_color_numeric_int_float_mix (line 444) | def test_color_numeric_int_float_mix(self):
    method test_color_alpha_in_palette (line 452) | def test_color_alpha_in_palette(self, x):
    method test_color_unknown_palette (line 458) | def test_color_unknown_palette(self, x):
    method test_object_defaults (line 465) | def test_object_defaults(self, x):
    method test_object_list (line 474) | def test_object_list(self, x):
    method test_object_dict (line 480) | def test_object_dict(self, x):
    method test_object_order (line 486) | def test_object_order(self, x):
    method test_object_order_subset (line 492) | def test_object_order_subset(self, x):
    method test_objects_that_are_weird (line 498) | def test_objects_that_are_weird(self, x):
    method test_alpha_default (line 504) | def test_alpha_default(self, x):
    method test_fill (line 509) | def test_fill(self):
    method test_fill_dict (line 515) | def test_fill_dict(self):
    method test_fill_nunique_warning (line 522) | def test_fill_nunique_warning(self):
    method test_interval_defaults (line 529) | def test_interval_defaults(self, x):
    method test_interval_tuple (line 537) | def test_interval_tuple(self, x):
    method test_interval_tuple_numeric (line 542) | def test_interval_tuple_numeric(self, y):
    method test_interval_list (line 547) | def test_interval_list(self, x):
    method test_interval_dict (line 553) | def test_interval_dict(self, x):
    method test_interval_with_transform (line 559) | def test_interval_with_transform(self, x):
    method test_empty_data (line 568) | def test_empty_data(self):
    method test_finalize (line 574) | def test_finalize(self, x):
  class TestTemporal (line 587) | class TestTemporal:
    method t (line 590) | def t(self):
    method x (line 595) | def x(self, t):
    method test_coordinate_defaults (line 598) | def test_coordinate_defaults(self, t, x):
    method test_interval_defaults (line 603) | def test_interval_defaults(self, t, x):
    method test_interval_with_range (line 609) | def test_interval_with_range(self, t, x):
    method test_interval_with_norm (line 617) | def test_interval_with_norm(self, t, x):
    method test_color_defaults (line 625) | def test_color_defaults(self, t, x):
    method test_color_named_values (line 632) | def test_color_named_values(self, t, x):
    method test_coordinate_axis (line 640) | def test_coordinate_axis(self, t, x):
    method test_tick_locator (line 650) | def test_tick_locator(self, t):
    method test_tick_upto (line 658) | def test_tick_upto(self, t, x):
    method test_label_formatter (line 666) | def test_label_formatter(self, t):
    method test_label_concise (line 675) | def test_label_concise(self, t, x):
  class TestBoolean (line 683) | class TestBoolean:
    method x (line 686) | def x(self):
    method test_coordinate (line 689) | def test_coordinate(self, x):
    method test_coordinate_axis (line 694) | def test_coordinate_axis(self, x):
    method test_coordinate_missing (line 710) | def test_coordinate_missing(self, x, dtype, value):
    method test_color_defaults (line 717) | def test_color_defaults(self, x):
    method test_color_list_palette (line 724) | def test_color_list_palette(self, x):
    method test_color_tuple_palette (line 731) | def test_color_tuple_palette(self, x):
    method test_color_dict_palette (line 738) | def test_color_dict_palette(self, x):
    method test_object_defaults (line 746) | def test_object_defaults(self, x):
    method test_object_list (line 758) | def test_object_list(self, x):
    method test_object_dict (line 765) | def test_object_dict(self, x):
    method test_fill (line 772) | def test_fill(self, x):
    method test_interval_defaults (line 777) | def test_interval_defaults(self, x):
    method test_interval_tuple (line 788) | def test_interval_tuple(self, x):
    method test_finalize (line 795) | def test_finalize(self, x):

FILE: tests/_core/test_subplots.py
  class TestSpecificationChecks (line 9) | class TestSpecificationChecks:
    method test_both_facets_and_wrap (line 11) | def test_both_facets_and_wrap(self):
    method test_cross_xy_pairing_and_wrap (line 18) | def test_cross_xy_pairing_and_wrap(self):
    method test_col_facets_and_x_pairing (line 25) | def test_col_facets_and_x_pairing(self):
    method test_wrapped_columns_and_y_pairing (line 33) | def test_wrapped_columns_and_y_pairing(self):
    method test_wrapped_x_pairing_and_facetd_rows (line 41) | def test_wrapped_x_pairing_and_facetd_rows(self):
  class TestSubplotSpec (line 50) | class TestSubplotSpec:
    method test_single_subplot (line 52) | def test_single_subplot(self):
    method test_single_facet (line 62) | def test_single_facet(self):
    method test_two_facets (line 75) | def test_two_facets(self):
    method test_col_facet_wrapped (line 94) | def test_col_facet_wrapped(self):
    method test_row_facet_wrapped (line 108) | def test_row_facet_wrapped(self):
    method test_col_facet_wrapped_single_row (line 122) | def test_col_facet_wrapped_single_row(self):
    method test_x_and_y_paired (line 136) | def test_x_and_y_paired(self):
    method test_x_paired (line 148) | def test_x_paired(self):
    method test_y_paired (line 159) | def test_y_paired(self):
    method test_x_paired_and_wrapped (line 170) | def test_x_paired_and_wrapped(self):
    method test_y_paired_and_wrapped (line 182) | def test_y_paired_and_wrapped(self):
    method test_y_paired_and_wrapped_single_row (line 194) | def test_y_paired_and_wrapped_single_row(self):
    method test_col_faceted_y_paired (line 206) | def test_col_faceted_y_paired(self):
    method test_row_faceted_x_paired (line 221) | def test_row_faceted_x_paired(self):
    method test_x_any_y_paired_non_cross (line 236) | def test_x_any_y_paired_non_cross(self):
    method test_x_any_y_paired_non_cross_wrapped (line 249) | def test_x_any_y_paired_non_cross_wrapped(self):
    method test_forced_unshared_facets (line 263) | def test_forced_unshared_facets(self):
  class TestSubplotElements (line 270) | class TestSubplotElements:
    method test_single_subplot (line 272) | def test_single_subplot(self):
    method test_single_facet_dim (line 288) | def test_single_facet_dim(self, dim):
    method test_single_facet_dim_wrapped (line 308) | def test_single_facet_dim_wrapped(self, dim):
    method test_both_facet_dims (line 338) | def test_both_facet_dims(self):
    method test_single_paired_var (line 374) | def test_single_paired_var(self, var):
    method test_single_paired_var_wrapped (line 403) | def test_single_paired_var_wrapped(self, var):
    method test_both_paired_variables (line 436) | def test_both_paired_variables(self):
    method test_both_paired_non_cross (line 467) | def test_both_paired_non_cross(self):
    method test_one_facet_one_paired (line 486) | def test_one_facet_one_paired(self, dim, var):

FILE: tests/_marks/test_area.py
  class TestArea (line 11) | class TestArea:
    method test_single_defaults (line 13) | def test_single_defaults(self):
    method test_set_properties (line 37) | def test_set_properties(self):
    method test_mapped_properties (line 66) | def test_mapped_properties(self):
    method test_unfilled (line 91) | def test_unfilled(self):
  class TestBand (line 101) | class TestBand:
    method test_range (line 103) | def test_range(self):
    method test_auto_range (line 116) | def test_auto_range(self):

FILE: tests/_marks/test_bar.py
  class TestBar (line 13) | class TestBar:
    method plot_bars (line 15) | def plot_bars(self, variables, mark_kws, layer_kws):
    method check_bar (line 21) | def check_bar(self, bar, x, y, width, height):
    method test_categorical_positions_vertical (line 28) | def test_categorical_positions_vertical(self):
    method test_categorical_positions_horizontal (line 37) | def test_categorical_positions_horizontal(self):
    method test_numeric_positions_vertical (line 46) | def test_numeric_positions_vertical(self):
    method test_numeric_positions_horizontal (line 55) | def test_numeric_positions_horizontal(self):
    method test_set_properties (line 64) | def test_set_properties(self):
    method test_mapped_properties (line 88) | def test_mapped_properties(self):
    method test_zero_height_skipped (line 101) | def test_zero_height_skipped(self):
    method test_artist_kws_clip (line 107) | def test_artist_kws_clip(self):
  class TestBars (line 114) | class TestBars:
    method x (line 117) | def x(self):
    method y (line 121) | def y(self):
    method color (line 125) | def color(self):
    method test_positions (line 128) | def test_positions(self, x, y):
    method test_positions_horizontal (line 141) | def test_positions_horizontal(self, x, y):
    method test_width (line 154) | def test_width(self, x, y):
    method test_mapped_color_direct_alpha (line 164) | def test_mapped_color_direct_alpha(self, x, y, color):
    method test_mapped_edgewidth (line 174) | def test_mapped_edgewidth(self, x, y):
    method test_auto_edgewidth (line 181) | def test_auto_edgewidth(self):
    method test_unfilled (line 194) | def test_unfilled(self, x, y):
    method test_log_scale (line 204) | def test_log_scale(self):

FILE: tests/_marks/test_base.py
  class TestMappable (line 13) | class TestMappable:
    method mark (line 15) | def mark(self, **features):
    method test_repr (line 29) | def test_repr(self):
    method test_input_checks (line 37) | def test_input_checks(self):
    method test_value (line 44) | def test_value(self):
    method test_default (line 53) | def test_default(self):
    method test_rcparam (line 62) | def test_rcparam(self):
    method test_depends (line 73) | def test_depends(self):
    method test_mapped (line 86) | def test_mapped(self):
    method test_color (line 102) | def test_color(self):
    method test_color_mapped_alpha (line 113) | def test_color_mapped_alpha(self):
    method test_color_scaled_as_strings (line 131) | def test_color_scaled_as_strings(self):
    method test_fillcolor (line 141) | def test_fillcolor(self):

FILE: tests/_marks/test_dot.py
  function default_palette (line 12) | def default_palette():
  class DotBase (line 17) | class DotBase:
    method check_offsets (line 19) | def check_offsets(self, points, x, y):
    method check_colors (line 25) | def check_colors(self, part, points, colors, alpha=None):
  class TestDot (line 33) | class TestDot(DotBase):
    method test_simple (line 35) | def test_simple(self):
    method test_filled_unfilled_mix (line 47) | def test_filled_unfilled_mix(self):
    method test_missing_coordinate_data (line 66) | def test_missing_coordinate_data(self):
    method test_missing_semantic_data (line 77) | def test_missing_semantic_data(self, prop):
  class TestDots (line 89) | class TestDots(DotBase):
    method test_simple (line 91) | def test_simple(self):
    method test_set_color (line 103) | def test_set_color(self):
    method test_map_color (line 115) | def test_map_color(self):
    method test_fill (line 128) | def test_fill(self):
    method test_pointsize (line 141) | def test_pointsize(self):
    method test_stroke (line 152) | def test_stroke(self):
    method test_filled_unfilled_mix (line 163) | def test_filled_unfilled_mix(self):

FILE: tests/_marks/test_line.py
  class TestPath (line 13) | class TestPath:
    method test_xy_data (line 15) | def test_xy_data(self):
    method test_shared_colors_direct (line 28) | def test_shared_colors_direct(self):
    method test_separate_colors_direct (line 39) | def test_separate_colors_direct(self):
    method test_shared_colors_mapped (line 50) | def test_shared_colors_mapped(self):
    method test_separate_colors_mapped (line 63) | def test_separate_colors_mapped(self):
    method test_color_with_alpha (line 77) | def test_color_with_alpha(self):
    method test_color_and_alpha (line 87) | def test_color_and_alpha(self):
    method test_other_props_direct (line 97) | def test_other_props_direct(self):
    method test_other_props_mapped (line 109) | def test_other_props_mapped(self):
    method test_capstyle (line 121) | def test_capstyle(self):
  class TestLine (line 139) | class TestLine:
    method test_xy_data (line 143) | def test_xy_data(self):
  class TestPaths (line 157) | class TestPaths:
    method test_xy_data (line 159) | def test_xy_data(self):
    method test_set_properties (line 175) | def test_set_properties(self):
    method test_mapped_properties (line 186) | def test_mapped_properties(self):
    method test_color_with_alpha (line 197) | def test_color_with_alpha(self):
    method test_color_and_alpha (line 205) | def test_color_and_alpha(self):
    method test_capstyle (line 213) | def test_capstyle(self):
  class TestLines (line 232) | class TestLines:
    method test_xy_data (line 234) | def test_xy_data(self):
    method test_single_orient_value (line 250) | def test_single_orient_value(self):
  class TestRange (line 261) | class TestRange:
    method test_xy_data (line 263) | def test_xy_data(self):
    method test_auto_range (line 277) | def test_auto_range(self):
    method test_mapped_color (line 288) | def test_mapped_color(self):
    method test_direct_properties (line 305) | def test_direct_properties(self):
  class TestDash (line 320) | class TestDash:
    method test_xy_data (line 322) | def test_xy_data(self):
    method test_xy_data_grouped (line 335) | def test_xy_data_grouped(self):
    method test_set_properties (line 350) | def test_set_properties(self):
    method test_mapped_properties (line 364) | def test_mapped_properties(self):
    method test_width (line 381) | def test_width(self):
    method test_dodge (line 394) | def test_dodge(self):

FILE: tests/_marks/test_text.py
  class TestText (line 12) | class TestText:
    method get_texts (line 14) | def get_texts(self, ax):
    method test_simple (line 21) | def test_simple(self):
    method test_set_properties (line 36) | def test_set_properties(self):
    method test_mapped_properties (line 54) | def test_mapped_properties(self):
    method test_mapped_alignment (line 72) | def test_mapped_alignment(self):
    method test_identity_fontsize (line 83) | def test_identity_fontsize(self):
    method test_offset_centered (line 93) | def test_offset_centered(self):
    method test_offset_valign (line 103) | def test_offset_valign(self):
    method test_offset_halign (line 117) | def test_offset_halign(self):

FILE: tests/_stats/test_aggregation.py
  class AggregationFixtures (line 12) | class AggregationFixtures:
    method df (line 15) | def df(self, rng):
    method get_groupby (line 25) | def get_groupby(self, df, orient):
  class TestAgg (line 32) | class TestAgg(AggregationFixtures):
    method test_default (line 34) | def test_default(self, df):
    method test_default_multi (line 44) | def test_default_multi(self, df):
    method test_func (line 67) | def test_func(self, df, func):
  class TestEst (line 78) | class TestEst(AggregationFixtures):
    method test_mean_sd (line 83) | def test_mean_sd(self, df, func):
    method test_sd_single_obs (line 96) | def test_sd_single_obs(self):
    method test_median_pi (line 106) | def test_median_pi(self, df):
    method test_weighted_mean (line 118) | def test_weighted_mean(self, df, rng):
    method test_seed (line 129) | def test_seed(self, df):

FILE: tests/_stats/test_counting.py
  class TestCount (line 12) | class TestCount:
    method df (line 15) | def df(self, rng):
    method get_groupby (line 25) | def get_groupby(self, df, orient):
    method test_single_grouper (line 31) | def test_single_grouper(self, df):
    method test_multiple_groupers (line 40) | def test_multiple_groupers(self, df):
  class TestHist (line 50) | class TestHist:
    method single_args (line 53) | def single_args(self):
    method triple_args (line 63) | def triple_args(self):
    method test_string_bins (line 72) | def test_string_bins(self, long_df):
    method test_int_bins (line 79) | def test_int_bins(self, long_df):
    method test_array_bins (line 87) | def test_array_bins(self, long_df):
    method test_binwidth (line 94) | def test_binwidth(self, long_df):
    method test_binrange (line 103) | def test_binrange(self, long_df):
    method test_discrete_bins (line 110) | def test_discrete_bins(self, long_df):
    method test_discrete_bins_from_nominal_scale (line 118) | def test_discrete_bins_from_nominal_scale(self, rng):
    method test_count_stat (line 127) | def test_count_stat(self, long_df, single_args):
    method test_probability_stat (line 133) | def test_probability_stat(self, long_df, single_args):
    method test_proportion_stat (line 139) | def test_proportion_stat(self, long_df, single_args):
    method test_percent_stat (line 145) | def test_percent_stat(self, long_df, single_args):
    method test_density_stat (line 151) | def test_density_stat(self, long_df, single_args):
    method test_frequency_stat (line 157) | def test_frequency_stat(self, long_df, single_args):
    method test_invalid_stat (line 163) | def test_invalid_stat(self):
    method test_cumulative_count (line 168) | def test_cumulative_count(self, long_df, single_args):
    method test_cumulative_proportion (line 174) | def test_cumulative_proportion(self, long_df, single_args):
    method test_cumulative_density (line 180) | def test_cumulative_density(self, long_df, single_args):
    method test_common_norm_default (line 186) | def test_common_norm_default(self, long_df, triple_args):
    method test_common_norm_false (line 192) | def test_common_norm_false(self, long_df, triple_args):
    method test_common_norm_subset (line 199) | def test_common_norm_subset(self, long_df, triple_args):
    method test_common_norm_warning (line 206) | def test_common_norm_warning(self, long_df, triple_args):
    method test_common_bins_default (line 212) | def test_common_bins_default(self, long_df, triple_args):
    method test_common_bins_false (line 221) | def test_common_bins_false(self, long_df, triple_args):
    method test_common_bins_subset (line 230) | def test_common_bins_subset(self, long_df, triple_args):
    method test_common_bins_warning (line 239) | def test_common_bins_warning(self, long_df, triple_args):
    method test_histogram_single (line 245) | def test_histogram_single(self, long_df, single_args):
    method test_histogram_multiple (line 253) | def test_histogram_multiple(self, long_df, triple_args):

FILE: tests/_stats/test_density.py
  class TestKDE (line 12) | class TestKDE:
    method df (line 15) | def df(self, rng):
    method get_groupby (line 25) | def get_groupby(self, df, orient):
    method integrate (line 30) | def integrate(self, y, x):
    method test_columns (line 37) | def test_columns(self, df, ori):
    method test_gridsize (line 47) | def test_gridsize(self, df, gridsize):
    method test_cut (line 59) | def test_cut(self, df, cut):
    method test_common_grid (line 72) | def test_common_grid(self, df, common_grid):
    method test_common_norm (line 88) | def test_common_norm(self, df, common_norm):
    method test_common_norm_variables (line 108) | def test_common_norm_variables(self, df):
    method test_common_input_checks (line 133) | def test_common_input_checks(self, df, param):
    method test_bw_adjust (line 146) | def test_bw_adjust(self, df):
    method test_bw_method_scalar (line 158) | def test_bw_method_scalar(self, df):
    method test_cumulative (line 172) | def test_cumulative(self, df, common_norm):
    method test_cumulative_requires_scipy (line 184) | def test_cumulative_requires_scipy(self):
    method test_singular (line 192) | def test_singular(self, df, vals):
    method test_missing (line 205) | def test_missing(self, df, col):

FILE: tests/_stats/test_order.py
  class Fixtures (line 13) | class Fixtures:
    method df (line 16) | def df(self, rng):
    method get_groupby (line 19) | def get_groupby(self, df, orient):
  class TestPerc (line 26) | class TestPerc(Fixtures):
    method test_int_k (line 28) | def test_int_k(self, df):
    method test_list_k (line 37) | def test_list_k(self, df):
    method test_orientation (line 46) | def test_orientation(self, df):
    method test_method (line 54) | def test_method(self, df):
    method test_grouped (line 67) | def test_grouped(self, df, rng):
    method test_with_na (line 79) | def test_with_na(self, df):

FILE: tests/_stats/test_regression.py
  class TestPolyFit (line 13) | class TestPolyFit:
    method df (line 16) | def df(self, rng):
    method test_no_grouper (line 26) | def test_no_grouper(self, df):
    method test_one_grouper (line 39) | def test_one_grouper(self, df):
    method test_missing_data (line 55) | def test_missing_data(self, df):

FILE: tests/conftest.py
  function close_figs (line 8) | def close_figs():
  function random_seed (line 15) | def random_seed():
  function rng (line 21) | def rng():
  function wide_df (line 27) | def wide_df(rng):
  function wide_array (line 36) | def wide_array(wide_df):
  function flat_series (line 43) | def flat_series(rng):
  function flat_array (line 50) | def flat_array(flat_series):
  function flat_list (line 56) | def flat_list(flat_series):
  function flat_data (line 62) | def flat_data(rng, request):
  function wide_list_of_series (line 76) | def wide_list_of_series(rng):
  function wide_list_of_arrays (line 83) | def wide_list_of_arrays(wide_list_of_series):
  function wide_list_of_lists (line 89) | def wide_list_of_lists(wide_list_of_series):
  function wide_dict_of_series (line 95) | def wide_dict_of_series(wide_list_of_series):
  function wide_dict_of_arrays (line 101) | def wide_dict_of_arrays(wide_list_of_series):
  function wide_dict_of_lists (line 107) | def wide_dict_of_lists(wide_list_of_series):
  function long_df (line 113) | def long_df(rng):
  function long_dict (line 140) | def long_dict(long_df):
  function repeated_df (line 146) | def repeated_df(rng):
  function null_df (line 158) | def null_df(rng, long_df):
  function object_df (line 170) | def object_df(rng, long_df):
  function null_series (line 180) | def null_series(flat_series):
  class MockConvertibleDataFrame (line 185) | class MockConvertibleDataFrame:
    method __init__ (line 188) | def __init__(self, data):
    method to_pandas (line 191) | def to_pandas(self, *args, **kwargs):
  function mock_long_df (line 198) | def mock_long_df(long_df):

FILE: tests/test_algorithms.py
  function random (line 10) | def random():
  function test_bootstrap (line 14) | def test_bootstrap(random):
  function test_bootstrap_length (line 24) | def test_bootstrap_length(random):
  function test_bootstrap_range (line 35) | def test_bootstrap_range(random):
  function test_bootstrap_multiarg (line 44) | def test_bootstrap_multiarg(random):
  function test_bootstrap_axis (line 57) | def test_bootstrap_axis(random):
  function test_bootstrap_seed (line 69) | def test_bootstrap_seed(random):
  function test_bootstrap_ols (line 78) | def test_bootstrap_ols(random):
  function test_bootstrap_units (line 102) | def test_bootstrap_units(random):
  function test_bootstrap_arglength (line 116) | def test_bootstrap_arglength():
  function test_bootstrap_string_func (line 122) | def test_bootstrap_string_func():
  function test_bootstrap_reproducibility (line 138) | def test_bootstrap_reproducibility(random):
  function test_nanaware_func_auto (line 158) | def test_nanaware_func_auto(random):
  function test_nanaware_func_warning (line 166) | def test_nanaware_func_warning(random):

FILE: tests/test_axisgrid.py
  class TestFacetGrid (line 28) | class TestFacetGrid:
    method test_self_data (line 37) | def test_self_data(self):
    method test_self_figure (line 42) | def test_self_figure(self):
    method test_self_axes (line 48) | def test_self_axes(self):
    method test_axes_array_size (line 54) | def test_axes_array_size(self):
    method test_single_axes (line 73) | def test_single_axes(self):
    method test_col_wrap (line 90) | def test_col_wrap(self):
    method test_normal_axes (line 118) | def test_normal_axes(self):
    method test_wrapped_axes (line 150) | def test_wrapped_axes(self):
    method test_axes_dict (line 162) | def test_axes_dict(self):
    method test_figure_size (line 189) | def test_figure_size(self):
    method test_figure_size_with_legend (line 200) | def test_figure_size_with_legend(self):
    method test_legend_data (line 213) | def test_legend_data(self):
    method test_legend_data_missing_level (line 236) | def test_legend_data_missing_level(self):
    method test_get_boolean_legend_data (line 261) | def test_get_boolean_legend_data(self):
    method test_legend_tuples (line 285) | def test_legend_tuples(self):
    method test_legend_options (line 297) | def test_legend_options(self):
    method test_legendout_with_colwrap (line 309) | def test_legendout_with_colwrap(self):
    method test_legend_tight_layout (line 316) | def test_legend_tight_layout(self):
    method test_subplot_kws (line 328) | def test_subplot_kws(self):
    method test_gridspec_kws (line 335) | def test_gridspec_kws(self):
    method test_gridspec_kws_col_wrap (line 351) | def test_gridspec_kws_col_wrap(self):
    method test_data_generator (line 358) | def test_data_generator(self):
    method test_map (line 398) | def test_map(self):
    method test_map_dataframe (line 413) | def test_map_dataframe(self):
    method test_set (line 434) | def test_set(self):
    method test_set_titles (line 448) | def test_set_titles(self):
    method test_set_titles_margin_titles (line 476) | def test_set_titles_margin_titles(self):
    method test_set_ticklabels (line 500) | def test_set_ticklabels(self):
    method test_set_axis_labels (line 534) | def test_set_axis_labels(self):
    method test_axis_lims (line 557) | def test_axis_lims(self):
    method test_data_orders (line 563) | def test_data_orders(self):
    method test_palette (line 592) | def test_palette(self):
    method test_hue_kws (line 615) | def test_hue_kws(self):
    method test_dropna (line 624) | def test_dropna(self):
    method test_categorical_column_missing_categories (line 636) | def test_categorical_column_missing_categories(self):
    method test_categorical_warning (line 645) | def test_categorical_warning(self):
    method test_refline (line 651) | def test_refline(self):
    method test_apply (line 675) | def test_apply(self, long_df):
    method test_pipe (line 686) | def test_pipe(self, long_df):
    method test_tick_params (line 698) | def test_tick_params(self):
    method test_data_interchange (line 715) | def test_data_interchange(self, mock_long_df, long_df):
  class TestPairGrid (line 725) | class TestPairGrid:
    method test_self_data (line 734) | def test_self_data(self):
    method test_ignore_datelike_data (line 739) | def test_ignore_datelike_data(self):
    method test_self_figure (line 747) | def test_self_figure(self):
    method test_self_axes (line 753) | def test_self_axes(self):
    method test_default_axes (line 759) | def test_default_axes(self):
    method test_specific_square_axes (line 768) | def test_specific_square_axes(self, vars):
    method test_remove_hue_from_default (line 776) | def test_remove_hue_from_default(self):
    method test_specific_nonsquare_axes (line 796) | def test_specific_nonsquare_axes(self, x_vars, y_vars):
    method test_corner (line 804) | def test_corner(self):
    method test_size (line 823) | def test_size(self):
    method test_empty_grid (line 835) | def test_empty_grid(self):
    method test_map (line 840) | def test_map(self):
    method test_map_nonsquare (line 868) | def test_map_nonsquare(self):
    method test_map_lower (line 883) | def test_map_lower(self):
    method test_map_upper (line 901) | def test_map_upper(self):
    method test_map_mixed_funcsig (line 919) | def test_map_mixed_funcsig(self):
    method test_map_diag (line 934) | def test_map_diag(self):
    method test_map_diag_rectangular (line 956) | def test_map_diag_rectangular(self):
    method test_map_diag_color (line 1016) | def test_map_diag_color(self):
    method test_map_diag_palette (line 1034) | def test_map_diag_palette(self):
    method test_map_diag_and_offdiag (line 1045) | def test_map_diag_and_offdiag(self):
    method test_diag_sharey (line 1075) | def test_diag_sharey(self):
    method test_map_diag_matplotlib (line 1082) | def test_map_diag_matplotlib(self):
    method test_palette (line 1096) | def test_palette(self):
    method test_hue_kws (line 1119) | def test_hue_kws(self):
    method test_hue_order (line 1135) | def test_hue_order(self):
    method test_hue_order_missing_level (line 1178) | def test_hue_order_missing_level(self):
    method test_hue_in_map (line 1221) | def test_hue_in_map(self, long_df):
    method test_nondefault_index (line 1229) | def test_nondefault_index(self):
    method test_dropna (line 1260) | def test_dropna(self, func):
    method test_histplot_legend (line 1288) | def test_histplot_legend(self):
    method test_pairplot (line 1297) | def test_pairplot(self):
    method test_pairplot_reg (line 1331) | def test_pairplot_reg(self):
    method test_pairplot_reg_hue (line 1365) | def test_pairplot_reg_hue(self):
    method test_pairplot_diag_kde (line 1379) | def test_pairplot_diag_kde(self):
    method test_pairplot_kde (line 1407) | def test_pairplot_kde(self):
    method test_pairplot_hist (line 1417) | def test_pairplot_hist(self):
    method test_pairplot_markers (line 1428) | def test_pairplot_markers(self):
    method test_pairplot_column_multiindex (line 1440) | def test_pairplot_column_multiindex(self):
    method test_corner_despine (line 1447) | def test_corner_despine(self):
    method test_corner_set (line 1453) | def test_corner_set(self):
    method test_legend (line 1459) | def test_legend(self):
    method test_tick_params (line 1467) | def test_tick_params(self):
    method test_data_interchange (line 1484) | def test_data_interchange(self, mock_long_df, long_df):
  class TestJointGrid (line 1494) | class TestJointGrid:
    method test_margin_grid_from_lists (line 1504) | def test_margin_grid_from_lists(self):
    method test_margin_grid_from_arrays (line 1510) | def test_margin_grid_from_arrays(self):
    method test_margin_grid_from_series (line 1516) | def test_margin_grid_from_series(self):
    method test_margin_grid_from_dataframe (line 1522) | def test_margin_grid_from_dataframe(self):
    method test_margin_grid_from_dataframe_bad_variable (line 1528) | def test_margin_grid_from_dataframe_bad_variable(self):
    method test_margin_grid_axis_labels (line 1533) | def test_margin_grid_axis_labels(self):
    method test_dropna (line 1546) | def test_dropna(self):
    method test_axlims (line 1554) | def test_axlims(self):
    method test_marginal_ticks (line 1565) | def test_marginal_ticks(self):
    method test_bivariate_plot (line 1575) | def test_bivariate_plot(self):
    method test_univariate_plot (line 1584) | def test_univariate_plot(self):
    method test_univariate_plot_distplot (line 1593) | def test_univariate_plot_distplot(self):
    method test_univariate_plot_matplotlib (line 1604) | def test_univariate_plot_matplotlib(self):
    method test_plot (line 1612) | def test_plot(self):
    method test_space (line 1625) | def test_space(self):
    method test_hue (line 1639) | def test_hue(self, long_df, as_vector):
    method test_refline (line 1661) | def test_refline(self):
  class TestJointPlot (line 1705) | class TestJointPlot:
    method test_scatter (line 1712) | def test_scatter(self):
    method test_scatter_hue (line 1731) | def test_scatter_hue(self, long_df):
    method test_reg (line 1744) | def test_reg(self):
    method test_resid (line 1759) | def test_resid(self):
    method test_hist (line 1767) | def test_hist(self, long_df):
    method test_hex (line 1781) | def test_hex(self):
    method test_kde (line 1788) | def test_kde(self, long_df):
    method test_kde_hue (line 1801) | def test_kde_hue(self, long_df):
    method test_color (line 1814) | def test_color(self):
    method test_palette (line 1824) | def test_palette(self, long_df):
    method test_hex_customise (line 1839) | def test_hex_customise(self):
    method test_bad_kind (line 1848) | def test_bad_kind(self):
    method test_unsupported_hue_kind (line 1853) | def test_unsupported_hue_kind(self):
    method test_leaky_dict (line 1859) | def test_leaky_dict(self):
    method test_distplot_kwarg_warning (line 1869) | def test_distplot_kwarg_warning(self, long_df):
    method test_ax_warning (line 1875) | def test_ax_warning(self, long_df):

FILE: tests/test_base.py
  function long_variables (line 43) | def long_variables(request):
  class TestSemanticMapping (line 47) | class TestSemanticMapping:
    method test_call_lookup (line 49) | def test_call_lookup(self):
  class TestHueMapping (line 58) | class TestHueMapping:
    method test_plotter_default_init (line 60) | def test_plotter_default_init(self, long_df):
    method test_plotter_customization (line 75) | def test_plotter_customization(self, long_df):
    method test_hue_map_null (line 87) | def test_hue_map_null(self, flat_series, null_series):
    method test_hue_map_categorical (line 98) | def test_hue_map_categorical(self, wide_df, long_df):
    method test_hue_map_numeric (line 220) | def test_hue_map_numeric(self, long_df):
    method test_hue_map_without_hue_dataa (line 302) | def test_hue_map_without_hue_dataa(self, long_df):
    method test_saturation (line 308) | def test_saturation(self, long_df):
  class TestSizeMapping (line 320) | class TestSizeMapping:
    method test_plotter_default_init (line 322) | def test_plotter_default_init(self, long_df):
    method test_plotter_customization (line 337) | def test_plotter_customization(self, long_df):
    method test_size_map_null (line 349) | def test_size_map_null(self, flat_series, null_series):
    method test_map_size_numeric (line 358) | def test_map_size_numeric(self, long_df):
    method test_map_size_categorical (line 403) | def test_map_size_categorical(self, long_df):
    method test_array_palette_deprecation (line 454) | def test_array_palette_deprecation(self, long_df):
  class TestStyleMapping (line 463) | class TestStyleMapping:
    method test_plotter_default_init (line 465) | def test_plotter_default_init(self, long_df):
    method test_plotter_customization (line 479) | def test_plotter_customization(self, long_df):
    method test_style_map_null (line 491) | def test_style_map_null(self, flat_series, null_series):
    method test_map_style (line 499) | def test_map_style(self, long_df):
  class TestVectorPlotter (line 576) | class TestVectorPlotter:
    method test_flat_variables (line 578) | def test_flat_variables(self, flat_data):
    method test_long_df (line 605) | def test_long_df(self, long_df, long_variables):
    method test_long_df_with_index (line 615) | def test_long_df_with_index(self, long_df, long_variables):
    method test_long_df_with_multiindex (line 628) | def test_long_df_with_multiindex(self, long_df, long_variables):
    method test_long_dict (line 641) | def test_long_dict(self, long_dict, long_variables):
    method test_long_vectors (line 658) | def test_long_vectors(self, long_df, long_variables, vector_type):
    method test_long_undefined_variables (line 677) | def test_long_undefined_variables(self, long_df):
    method test_empty_data_input (line 699) | def test_empty_data_input(self, arg):
    method test_units (line 710) | def test_units(self, repeated_df):
    method test_long_numeric_name (line 720) | def test_long_numeric_name(self, long_df, name):
    method test_long_hierarchical_index (line 728) | def test_long_hierarchical_index(self, rng):
    method test_long_scalar_and_data (line 742) | def test_long_scalar_and_data(self, long_df):
    method test_wide_semantic_error (line 749) | def test_wide_semantic_error(self, wide_df):
    method test_long_unknown_error (line 755) | def test_long_unknown_error(self, long_df):
    method test_long_unmatched_size_error (line 761) | def test_long_unmatched_size_error(self, long_df, flat_array):
    method test_wide_categorical_columns (line 767) | def test_wide_categorical_columns(self, wide_df):
    method test_iter_data_quantitites (line 773) | def test_iter_data_quantitites(self, long_df):
    method test_iter_data_keys (line 865) | def test_iter_data_keys(self, long_df):
    method test_iter_data_values (line 927) | def test_iter_data_values(self, long_df):
    method test_iter_data_reverse (line 956) | def test_iter_data_reverse(self, long_df):
    method test_iter_data_dropna (line 967) | def test_iter_data_dropna(self, null_df):
    method test_axis_labels (line 982) | def test_axis_labels(self, long_df):
    method test_attach_basics (line 1042) | def test_attach_basics(self, long_df, variables):
    method test_attach_disallowed (line 1049) | def test_attach_disallowed(self, long_df):
    method test_attach_log_scale (line 1072) | def test_attach_log_scale(self, long_df):
    method test_attach_converters (line 1128) | def test_attach_converters(self, long_df):
    method test_attach_facets (line 1142) | def test_attach_facets(self, long_df):
    method test_scale_transform_identity (line 1150) | def test_scale_transform_identity(self, long_df):
    method test_scale_transform_identity_facets (line 1161) | def test_scale_transform_identity_facets(self, long_df):
    method test_scale_transform_log (line 1172) | def test_scale_transform_log(self, long_df):
    method test_scale_transform_facets (line 1184) | def test_scale_transform_facets(self, long_df):
    method test_scale_transform_mixed_facets (line 1194) | def test_scale_transform_mixed_facets(self, long_df):
    method test_attach_shared_axes (line 1205) | def test_attach_shared_axes(self, long_df):
    method test_get_axes_single (line 1266) | def test_get_axes_single(self, long_df):
    method test_get_axes_facets (line 1273) | def test_get_axes_facets(self, long_df):
    method test_comp_data (line 1287) | def test_comp_data(self, long_df):
    method test_comp_data_log (line 1313) | def test_comp_data_log(self, long_df):
    method test_comp_data_category_order (line 1324) | def test_comp_data_category_order(self):
    method comp_data_missing_fixture (line 1343) | def comp_data_missing_fixture(self, request):
    method test_comp_data_missing (line 1367) | def test_comp_data_missing(self, comp_data_missing_fixture):
    method test_comp_data_duplicate_index (line 1376) | def test_comp_data_duplicate_index(self):
    method test_comp_data_nullable_dtype (line 1384) | def test_comp_data_nullable_dtype(self):
    method test_var_order (line 1393) | def test_var_order(self, long_df):
    method test_scale_native (line 1404) | def test_scale_native(self, long_df):
    method test_scale_numeric (line 1410) | def test_scale_numeric(self, long_df):
    method test_scale_datetime (line 1416) | def test_scale_datetime(self, long_df):
    method test_scale_categorical (line 1422) | def test_scale_categorical(self, long_df):
  class TestCoreFunc (line 1460) | class TestCoreFunc:
    method test_unique_dashes (line 1462) | def test_unique_dashes(self):
    method test_unique_markers (line 1474) | def test_unique_markers(self):
    method test_variable_type (line 1484) | def test_variable_type(self):
    method test_infer_orient (line 1528) | def test_infer_orient(self):
    method test_categorical_order (line 1573) | def test_categorical_order(self):

FILE: tests/test_categorical.py
  class TestCategoricalPlotterNew (line 54) | class TestCategoricalPlotterNew:
    method test_axis_labels (line 68) | def test_axis_labels(self, long_df, func, kwargs):
    method test_empty (line 79) | def test_empty(self, func):
    method test_redundant_hue_backcompat (line 93) | def test_redundant_hue_backcompat(self, long_df):
  class SharedAxesLevelTests (line 111) | class SharedAxesLevelTests:
    method orient_indices (line 113) | def orient_indices(self, orient):
    method common_kws (line 119) | def common_kws(self):
    method test_labels_long (line 123) | def test_labels_long(self, long_df, orient):
    method test_labels_wide (line 148) | def test_labels_wide(self, wide_df):
    method test_labels_hue_order (line 161) | def test_labels_hue_order(self, long_df):
    method test_color (line 170) | def test_color(self, long_df, common_kws):
    method test_two_calls (line 190) | def test_two_calls(self):
    method test_redundant_hue_legend (line 197) | def test_redundant_hue_legend(self, long_df):
    method test_log_scale (line 207) | def test_log_scale(self, long_df, orient):
  class SharedScatterTests (line 216) | class SharedScatterTests(SharedAxesLevelTests):
    method get_last_color (line 219) | def get_last_color(self, ax):
    method test_color (line 228) | def test_color(self, long_df, common_kws):
    method test_supplied_color_array (line 240) | def test_supplied_color_array(self, long_df):
    method test_unfilled_marker (line 260) | def test_unfilled_marker(self, long_df):
    method test_wide (line 277) | def test_wide(self, wide_df, orient, data_type):
    method test_flat (line 306) | def test_flat(self, flat_series, orient):
    method test_positions (line 342) | def test_positions(self, long_df, variables, orient):
    method test_positions_dodged (line 390) | def test_positions_dodged(self, long_df, variables):
    method test_positions_unfixed (line 429) | def test_positions_unfixed(self, long_df, cat_var):
    method test_order (line 464) | def test_order(self, x_type, order):
    method test_hue_categorical (line 497) | def test_hue_categorical(self, long_df, hue_var):
    method test_hue_dodged (line 522) | def test_hue_dodged(self, long_df, hue_var):
    method test_single (line 542) | def test_single(self, long_df, val_var, val_col, hue_col):
    method test_attributes (line 586) | def test_attributes(self, long_df):
    method test_three_points (line 601) | def test_three_points(self):
    method test_legend_categorical (line 608) | def test_legend_categorical(self, long_df):
    method test_legend_numeric (line 615) | def test_legend_numeric(self, long_df):
    method test_legend_attributes (line 621) | def test_legend_attributes(self, long_df):
    method test_legend_disabled (line 629) | def test_legend_disabled(self, long_df):
    method test_palette_from_color_deprecation (line 634) | def test_palette_from_color_deprecation(self, long_df):
    method test_palette_with_hue_deprecation (line 650) | def test_palette_with_hue_deprecation(self, long_df):
    method test_log_scale (line 659) | def test_log_scale(self):
    method test_vs_catplot (line 700) | def test_vs_catplot(self, long_df, wide_df, kwargs):
    method test_empty_palette (line 723) | def test_empty_palette(self):
  class SharedAggTests (line 727) | class SharedAggTests(SharedAxesLevelTests):
    method test_labels_flat (line 729) | def test_labels_flat(self):
  class SharedPatchArtistTests (line 746) | class SharedPatchArtistTests:
    method test_legend_fill (line 749) | def test_legend_fill(self, long_df, fill):
    method test_legend_attributes (line 766) | def test_legend_attributes(self, long_df):
  class TestStripPlot (line 773) | class TestStripPlot(SharedScatterTests):
    method test_jitter_unfixed (line 777) | def test_jitter_unfixed(self, long_df):
    method test_jitter (line 797) | def test_jitter(self, long_df, orient, jitter):
  class TestSwarmPlot (line 830) | class TestSwarmPlot(SharedScatterTests):
  class TestBoxPlot (line 835) | class TestBoxPlot(SharedAxesLevelTests, SharedPatchArtistTests):
    method common_kws (line 840) | def common_kws(self):
    method get_last_color (line 843) | def get_last_color(self, ax):
    method get_box_verts (line 850) | def get_box_verts(self, box):
    method check_box (line 857) | def check_box(self, bxp, data, orient, pos, width=0.8):
    method check_whiskers (line 873) | def check_whiskers(self, bxp, data, orient, pos, capsize=0.4, whis=1.5):
    method test_single_var (line 906) | def test_single_var(self, long_df, orient, col):
    method test_vector_data (line 915) | def test_vector_data(self, long_df, orient, col):
    method test_wide_data (line 924) | def test_wide_data(self, wide_df, orient):
    method test_grouped (line 934) | def test_grouped(self, long_df, orient):
    method test_hue_grouped (line 946) | def test_hue_grouped(self, long_df, orient):
    method test_hue_not_dodged (line 960) | def test_hue_not_dodged(self, long_df):
    method test_dodge_native_scale (line 972) | def test_dodge_native_scale(self, long_df):
    method test_dodge_native_scale_log (line 989) | def test_dodge_native_scale_log(self, long_df):
    method test_dodge_without_hue (line 1002) | def test_dodge_without_hue(self, long_df):
    method test_log_data_scale (line 1013) | def test_log_data_scale(self, long_df, orient):
    method test_color (line 1024) | def test_color(self, long_df):
    method test_wide_data_multicolored (line 1031) | def test_wide_data_multicolored(self, wide_df):
    method test_wide_data_single_color (line 1036) | def test_wide_data_single_color(self, wide_df):
    method test_hue_colors (line 1043) | def test_hue_colors(self, long_df):
    method test_linecolor (line 1050) | def test_linecolor(self, long_df):
    method test_linecolor_gray_warning (line 1062) | def test_linecolor_gray_warning(self, long_df):
    method test_saturation (line 1067) | def test_saturation(self, long_df):
    method test_linewidth (line 1074) | def test_linewidth(self, long_df):
    method test_fill (line 1082) | def test_fill(self, long_df):
    method test_notch (line 1092) | def test_notch(self, long_df, notch_param):
    method test_whis (line 1098) | def test_whis(self, long_df):
    method test_gap (line 1105) | def test_gap(self, long_df):
    method test_prop_dicts (line 1117) | def test_prop_dicts(self, long_df):
    method test_showfliers (line 1135) | def test_showfliers(self, long_df):
    method test_vs_catplot (line 1162) | def test_vs_catplot(self, long_df, wide_df, null_df, flat_series, kwar...
  class TestBoxenPlot (line 1183) | class TestBoxenPlot(SharedAxesLevelTests, SharedPatchArtistTests):
    method common_kws (line 1188) | def common_kws(self):
    method get_last_color (line 1191) | def get_last_color(self, ax):
    method get_box_width (line 1196) | def get_box_width(self, path, orient="x"):
    method check_boxen (line 1202) | def check_boxen(self, patches, data, orient, pos, width=0.8):
    method test_single_var (line 1215) | def test_single_var(self, long_df, orient, col):
    method test_vector_data (line 1223) | def test_vector_data(self, long_df, orient, col):
    method test_wide_data (line 1231) | def test_wide_data(self, wide_df, orient):
    method test_grouped (line 1241) | def test_grouped(self, long_df, orient):
    method test_hue_grouped (line 1252) | def test_hue_grouped(self, long_df, orient):
    method test_dodge_native_scale (line 1265) | def test_dodge_native_scale(self, long_df):
    method test_color (line 1281) | def test_color(self, long_df):
    method test_hue_colors (line 1290) | def test_hue_colors(self, long_df):
    method test_linecolor (line 1299) | def test_linecolor(self, long_df):
    method test_linewidth (line 1306) | def test_linewidth(self, long_df):
    method test_saturation (line 1313) | def test_saturation(self, long_df):
    method test_gap (line 1320) | def test_gap(self, long_df):
    method test_fill (line 1332) | def test_fill(self, long_df):
    method test_k_depth_int (line 1338) | def test_k_depth_int(self, rng):
    method test_k_depth_full (line 1344) | def test_k_depth_full(self, rng):
    method test_trust_alpha (line 1355) | def test_trust_alpha(self, rng):
    method test_outlier_prop (line 1363) | def test_outlier_prop(self, rng):
    method test_exponential_width_method (line 1371) | def test_exponential_width_method(self, rng):
    method test_linear_width_method (line 1379) | def test_linear_width_method(self, rng):
    method test_area_width_method (line 1387) | def test_area_width_method(self, rng):
    method test_box_kws (line 1395) | def test_box_kws(self, long_df):
    method test_line_kws (line 1401) | def test_line_kws(self, long_df):
    method test_flier_kws (line 1407) | def test_flier_kws(self, long_df):
    method test_k_depth_checks (line 1414) | def test_k_depth_checks(self, long_df):
    method test_width_method_check (line 1422) | def test_width_method_check(self, long_df):
    method test_scale_deprecation (line 1427) | def test_scale_deprecation(self, long_df):
    method test_vs_catplot (line 1459) | def test_vs_catplot(self, long_df, wide_df, null_df, flat_series, kwar...
  class TestViolinPlot (line 1480) | class TestViolinPlot(SharedAxesLevelTests, SharedPatchArtistTests):
    method common_kws (line 1485) | def common_kws(self):
    method get_last_color (line 1488) | def get_last_color(self, ax):
    method violin_width (line 1493) | def violin_width(self, poly, orient="x"):
    method check_violin (line 1498) | def check_violin(self, poly, data, orient, pos, width=0.8):
    method test_single_var (line 1510) | def test_single_var(self, long_df, orient, col):
    method test_vector_data (line 1518) | def test_vector_data(self, long_df, orient, col):
    method test_wide_data (line 1526) | def test_wide_data(self, wide_df, orient):
    method test_grouped (line 1535) | def test_grouped(self, long_df, orient):
    method test_hue_grouped (line 1545) | def test_hue_grouped(self, long_df, orient):
    method test_hue_not_dodged (line 1558) | def test_hue_not_dodged(self, long_df):
    method test_dodge_native_scale (line 1568) | def test_dodge_native_scale(self, long_df):
    method test_dodge_native_scale_log (line 1585) | def test_dodge_native_scale_log(self, long_df):
    method test_color (line 1600) | def test_color(self, long_df):
    method test_hue_colors (line 1607) | def test_hue_colors(self, long_df):
    method test_linecolor (line 1615) | def test_linecolor(self, long_df, inner):
    method test_linewidth (line 1626) | def test_linewidth(self, long_df):
    method test_saturation (line 1633) | def test_saturation(self, long_df):
    method test_fill (line 1641) | def test_fill(self, long_df, inner):
    method test_inner_box (line 1654) | def test_inner_box(self, long_df, orient):
    method test_inner_quartiles (line 1675) | def test_inner_quartiles(self, long_df, orient):
    method test_inner_stick (line 1688) | def test_inner_stick(self, long_df, orient):
    method test_inner_points (line 1698) | def test_inner_points(self, long_df, orient):
    method test_split_single (line 1707) | def test_split_single(self, long_df):
    method test_split_multi (line 1717) | def test_split_multi(self, long_df):
    method test_density_norm_area (line 1731) | def test_density_norm_area(self, long_df):
    method test_density_norm_count (line 1740) | def test_density_norm_count(self, long_df):
    method test_density_norm_width (line 1749) | def test_density_norm_width(self, long_df):
    method test_common_norm (line 1755) | def test_common_norm(self, long_df):
    method test_scale_deprecation (line 1763) | def test_scale_deprecation(self, long_df):
    method test_scale_hue_deprecation (line 1768) | def test_scale_hue_deprecation(self, long_df):
    method test_bw_adjust (line 1773) | def test_bw_adjust(self, long_df):
    method test_bw_deprecation (line 1781) | def test_bw_deprecation(self, long_df):
    method test_gap (line 1786) | def test_gap(self, long_df):
    method test_inner_kws (line 1793) | def test_inner_kws(self, long_df):
    method test_box_inner_kws (line 1800) | def test_box_inner_kws(self, long_df):
    method test_vs_catplot (line 1836) | def test_vs_catplot(self, long_df, wide_df, null_df, flat_series, kwar...
  class TestBarPlot (line 1857) | class TestBarPlot(SharedAggTests):
    method common_kws (line 1862) | def common_kws(self):
    method get_last_color (line 1865) | def get_last_color(self, ax):
    method test_single_var (line 1873) | def test_single_var(self, orient):
    method test_wide_df (line 1882) | def test_wide_df(self, wide_df, orient):
    method test_vector_orient (line 1891) | def test_vector_orient(self, orient):
    method test_xy_vertical (line 1902) | def test_xy_vertical(self):
    method test_xy_horizontal (line 1913) | def test_xy_horizontal(self):
    method test_xy_with_na_grouper (line 1924) | def test_xy_with_na_grouper(self):
    method test_xy_with_na_value (line 1934) | def test_xy_with_na_value(self):
    method test_hue_redundant (line 1944) | def test_hue_redundant(self):
    method test_hue_matched (line 1956) | def test_hue_matched(self):
    method test_hue_matched_by_name (line 1969) | def test_hue_matched_by_name(self):
    method test_hue_dodged (line 1980) | def test_hue_dodged(self):
    method test_gap (line 1998) | def test_gap(self):
    method test_hue_undodged (line 2008) | def test_hue_undodged(self):
    method test_hue_order (line 2022) | def test_hue_order(self):
    method test_hue_norm (line 2032) | def test_hue_norm(self):
    method test_fill (line 2042) | def test_fill(self):
    method test_xy_native_scale (line 2053) | def test_xy_native_scale(self):
    method test_xy_native_scale_log_transform (line 2064) | def test_xy_native_scale_log_transform(self):
    method test_datetime_native_scale_axis (line 2079) | def test_datetime_native_scale_axis(self):
    method test_native_scale_dodged (line 2088) | def test_native_scale_dodged(self):
    method test_native_scale_log_transform_dodged (line 2100) | def test_native_scale_log_transform_dodged(self):
    method test_estimate_default (line 2114) | def test_estimate_default(self, long_df):
    method test_estimate_string (line 2124) | def test_estimate_string(self, long_df):
    method test_estimate_func (line 2134) | def test_estimate_func(self, long_df):
    method test_weighted_estimate (line 2144) | def test_weighted_estimate(self, long_df):
    method test_estimate_log_transform (line 2151) | def test_estimate_log_transform(self, long_df):
    method test_errorbars (line 2159) | def test_errorbars(self, long_df):
    method test_width (line 2172) | def test_width(self):
    method test_width_native_scale (line 2181) | def test_width_native_scale(self):
    method test_width_spaced_categories (line 2189) | def test_width_spaced_categories(self):
    method test_saturation_color (line 2196) | def test_saturation_color(self):
    method test_saturation_palette (line 2204) | def test_saturation_palette(self):
    method test_legend_numeric_auto (line 2212) | def test_legend_numeric_auto(self, long_df):
    method test_legend_numeric_full (line 2217) | def test_legend_numeric_full(self, long_df):
    method test_legend_disabled (line 2224) | def test_legend_disabled(self, long_df):
    method test_error_caps (line 2229) | def test_error_caps(self):
    method test_error_caps_native_scale (line 2241) | def test_error_caps_native_scale(self):
    method test_error_caps_native_scale_log_transform (line 2253) | def test_error_caps_native_scale_log_transform(self):
    method test_bar_kwargs (line 2267) | def test_bar_kwargs(self):
    method test_legend_attributes (line 2277) | def test_legend_attributes(self, long_df):
    method test_legend_unfilled (line 2288) | def test_legend_unfilled(self, long_df):
    method test_err_kws (line 2298) | def test_err_kws(self, fill):
    method test_vs_catplot (line 2330) | def test_vs_catplot(self, long_df, wide_df, null_df, flat_series, kwar...
    method test_errwidth_deprecation (line 2354) | def test_errwidth_deprecation(self):
    method test_errcolor_deprecation (line 2363) | def test_errcolor_deprecation(self):
    method test_capsize_as_none_deprecation (line 2372) | def test_capsize_as_none_deprecation(self):
    method test_hue_implied_by_palette_deprecation (line 2380) | def test_hue_implied_by_palette_deprecation(self):
  class TestPointPlot (line 2393) | class TestPointPlot(SharedAggTests):
    method get_last_color (line 2397) | def get_last_color(self, ax):
    method test_single_var (line 2403) | def test_single_var(self, orient):
    method test_wide_df (line 2411) | def test_wide_df(self, wide_df, orient):
    method test_vector_orient (line 2427) | def test_vector_orient(self, orient):
    method test_xy_vertical (line 2441) | def test_xy_vertical(self):
    method test_xy_horizontal (line 2448) | def test_xy_horizontal(self):
    method test_xy_with_na_grouper (line 2455) | def test_xy_with_na_grouper(self):
    method test_xy_with_na_value (line 2465) | def test_xy_with_na_value(self):
    method test_hue (line 2475) | def test_hue(self):
    method test_wide_data_is_joined (line 2484) | def test_wide_data_is_joined(self, wide_df):
    method test_xy_native_scale (line 2489) | def test_xy_native_scale(self):
    method test_estimate (line 2500) | def test_estimate(self, long_df, estimator):
    method test_weighted_estimate (line 2510) | def test_weighted_estimate(self, long_df):
    method test_estimate_log_transform (line 2517) | def test_estimate_log_transform(self, long_df):
    method test_errorbars (line 2525) | def test_errorbars(self, long_df):
    method test_marker_linestyle (line 2538) | def test_marker_linestyle(self):
    method test_markers_linestyles_single (line 2546) | def test_markers_linestyles_single(self):
    method test_markers_linestyles_mapped (line 2554) | def test_markers_linestyles_mapped(self):
    method test_dodge_boolean (line 2569) | def test_dodge_boolean(self):
    method test_dodge_float (line 2579) | def test_dodge_float(self):
    method test_dodge_log_scale (line 2589) | def test_dodge_log_scale(self):
    method test_err_kws (line 2601) | def test_err_kws(self):
    method test_err_kws_inherited (line 2610) | def test_err_kws_inherited(self):
    method test_legend_contents (line 2623) | def test_legend_contents(self):
    method test_legend_set_props (line 2640) | def test_legend_set_props(self):
    method test_legend_synced_props (line 2655) | def test_legend_synced_props(self):
    method test_vs_catplot (line 2692) | def test_vs_catplot(self, long_df, wide_df, null_df, flat_series, kwar...
    method test_legend_disabled (line 2716) | def test_legend_disabled(self, long_df):
    method test_join_deprecation (line 2721) | def test_join_deprecation(self):
    method test_scale_deprecation (line 2727) | def test_scale_deprecation(self):
    method test_layered_plot_clipping (line 2737) | def test_layered_plot_clipping(self):
  class TestCountPlot (line 2747) | class TestCountPlot:
    method test_empty (line 2749) | def test_empty(self):
    method test_labels_long (line 2757) | def test_labels_long(self, long_df):
    method test_wide_data (line 2772) | def test_wide_data(self, wide_df):
    method test_flat_series (line 2782) | def test_flat_series(self):
    method test_x_series (line 2794) | def test_x_series(self):
    method test_y_series (line 2806) | def test_y_series(self):
    method test_hue_redundant (line 2818) | def test_hue_redundant(self):
    method test_hue_dodged (line 2832) | def test_hue_dodged(self):
    method test_stat (line 2851) | def test_stat(self, long_df, stat):
    method test_xy_error (line 2862) | def test_xy_error(self, long_df):
    method test_legend_numeric_auto (line 2867) | def test_legend_numeric_auto(self, long_df):
    method test_legend_disabled (line 2872) | def test_legend_disabled(self, long_df):
    method test_vs_catplot (line 2899) | def test_vs_catplot(self, long_df, wide_df, null_df, flat_series, kwar...
  class CategoricalFixture (line 2921) | class CategoricalFixture:
    method get_box_artists (line 2935) | def get_box_artists(self, ax):
  class TestCatPlot (line 2944) | class TestCatPlot(CategoricalFixture):
    method test_facet_organization (line 2946) | def test_facet_organization(self):
    method test_plot_elements (line 2960) | def test_plot_elements(self):
    method test_bad_plot_kind_error (line 3024) | def test_bad_plot_kind_error(self):
    method test_count_x_and_y (line 3029) | def test_count_x_and_y(self):
    method test_plot_colors (line 3034) | def test_plot_colors(self):
    method test_ax_kwarg_removal (line 3076) | def test_ax_kwarg_removal(self):
    method test_share_xy (line 3084) | def test_share_xy(self):
    method test_facetgrid_data (line 3130) | def test_facetgrid_data(self, long_df):
    method test_array_faceter (line 3139) | def test_array_faceter(self, long_df, var):
    method test_invalid_kind (line 3147) | def test_invalid_kind(self, long_df):
    method test_legend_with_auto (line 3152) | def test_legend_with_auto(self):
    method test_weights_warning (line 3160) | def test_weights_warning(self, long_df):
  class TestBeeswarm (line 3167) | class TestBeeswarm:
    method test_could_overlap (line 3169) | def test_could_overlap(self):
    method test_position_candidates (line 3180) | def test_position_candidates(self):
    method test_find_first_non_overlapping_candidate (line 3193) | def test_find_first_non_overlapping_candidate(self):
    method test_beeswarm (line 3202) | def test_beeswarm(self, long_df):
    method test_add_gutters (line 3217) | def test_add_gutters(self):
  class TestBoxPlotContainer (line 3232) | class TestBoxPlotContainer:
    method container (line 3235) | def container(self, wide_array):
    method test_repr (line 3241) | def test_repr(self, container, wide_array):
    method test_iteration (line 3246) | def test_iteration(self, container):
    method test_label (line 3251) | def test_label(self, container):
    method test_children (line 3257) | def test_children(self, container):

FILE: tests/test_distributions.py
  function get_contour_coords (line 43) | def get_contour_coords(c, filter_empty=False):
  function get_contour_color (line 55) | def get_contour_color(c):
  class TestDistPlot (line 67) | class TestDistPlot:
    method test_hist_bins (line 72) | def test_hist_bins(self):
    method test_elements (line 88) | def test_elements(self):
    method test_distplot_with_nans (line 128) | def test_distplot_with_nans(self):
  class SharedAxesLevelTests (line 146) | class SharedAxesLevelTests:
    method test_color (line 148) | def test_color(self, long_df, **kwargs):
  class TestRugPlot (line 164) | class TestRugPlot(SharedAxesLevelTests):
    method get_last_color (line 168) | def get_last_color(self, ax, **kwargs):
    method assert_rug_equal (line 172) | def assert_rug_equal(self, a, b):
    method test_long_data (line 177) | def test_long_data(self, long_df, variable):
    method test_bivariate_data (line 191) | def test_bivariate_data(self, long_df):
    method test_wide_vs_long_data (line 202) | def test_wide_vs_long_data(self, wide_df):
    method test_flat_vector (line 218) | def test_flat_vector(self, long_df):
    method test_datetime_data (line 225) | def test_datetime_data(self, long_df):
    method test_empty_data (line 231) | def test_empty_data(self):
    method test_a_deprecation (line 236) | def test_a_deprecation(self, flat_series):
    method test_axis_deprecation (line 247) | def test_axis_deprecation(self, flat_series, variable):
    method test_vertical_deprecation (line 257) | def test_vertical_deprecation(self, flat_series):
    method test_rug_data (line 267) | def test_rug_data(self, flat_array):
    method test_rug_colors (line 278) | def test_rug_colors(self, long_df):
    method test_expand_margins (line 291) | def test_expand_margins(self, flat_array):
    method test_multiple_rugs (line 308) | def test_multiple_rugs(self):
    method test_matplotlib_kwargs (line 318) | def test_matplotlib_kwargs(self, flat_series):
    method test_axis_labels (line 327) | def test_axis_labels(self, flat_series):
    method test_log_scale (line 333) | def test_log_scale(self, long_df):
  class TestKDEPlotUnivariate (line 348) | class TestKDEPlotUnivariate(SharedAxesLevelTests):
    method get_last_color (line 352) | def get_last_color(self, ax, fill=True):
    method test_color (line 360) | def test_color(self, long_df, fill):
    method test_long_vectors (line 377) | def test_long_vectors(self, long_df, variable):
    method test_wide_vs_long_data (line 396) | def test_wide_vs_long_data(self, wide_df):
    method test_flat_vector (line 406) | def test_flat_vector(self, long_df):
    method test_empty_data (line 413) | def test_empty_data(self):
    method test_singular_data (line 418) | def test_singular_data(self):
    method test_variable_assignment (line 438) | def test_variable_assignment(self, long_df):
    method test_vertical_deprecation (line 449) | def test_vertical_deprecation(self, long_df):
    method test_bw_deprecation (line 459) | def test_bw_deprecation(self, long_df):
    method test_kernel_deprecation (line 469) | def test_kernel_deprecation(self, long_df):
    method test_shade_deprecation (line 479) | def test_shade_deprecation(self, long_df):
    method test_hue_colors (line 491) | def test_hue_colors(self, long_df, multiple):
    method test_hue_stacking (line 509) | def test_hue_stacking(self, long_df):
    method test_hue_filling (line 533) | def test_hue_filling(self, long_df):
    method test_fill_default (line 557) | def test_fill_default(self, long_df, multiple):
    method test_fill_nondefault (line 566) | def test_fill_nondefault(self, long_df, multiple):
    method test_color_cycle_interaction (line 577) | def test_color_cycle_interaction(self, flat_series):
    method test_artist_color (line 603) | def test_artist_color(self, long_df, fill):
    method test_datetime_scale (line 625) | def test_datetime_scale(self, long_df):
    method test_multiple_argument_check (line 632) | def test_multiple_argument_check(self, long_df):
    method test_cut (line 637) | def test_cut(self, rng):
    method test_clip (line 656) | def test_clip(self, rng):
    method test_line_is_density (line 668) | def test_line_is_density(self, long_df):
    method test_cumulative (line 675) | def test_cumulative(self, long_df):
    method test_cumulative_requires_scipy (line 683) | def test_cumulative_requires_scipy(self, long_df):
    method test_common_norm (line 688) | def test_common_norm(self, long_df):
    method test_common_grid (line 709) | def test_common_grid(self, long_df):
    method test_bw_method (line 734) | def test_bw_method(self, long_df):
    method test_bw_adjust (line 753) | def test_bw_adjust(self, long_df):
    method test_log_scale_implicit (line 772) | def test_log_scale_implicit(self, rng):
    method test_log_scale_explicit (line 792) | def test_log_scale_explicit(self, rng):
    method test_log_scale_with_hue (line 818) | def test_log_scale_with_hue(self, rng):
    method test_log_scale_normalization (line 824) | def test_log_scale_normalization(self, rng):
    method test_weights (line 832) | def test_weights(self):
    method test_weight_norm (line 846) | def test_weight_norm(self, rng):
    method test_sticky_edges (line 859) | def test_sticky_edges(self, long_df):
    method test_line_kws (line 871) | def test_line_kws(self, flat_array):
    method test_input_checking (line 880) | def test_input_checking(self, long_df):
    method test_axis_labels (line 886) | def test_axis_labels(self, long_df):
    method test_legend (line 898) | def test_legend(self, long_df):
    method test_replaced_kws (line 923) | def test_replaced_kws(self, long_df):
  class TestKDEPlotBivariate (line 928) | class TestKDEPlotBivariate:
    method test_long_vectors (line 930) | def test_long_vectors(self, long_df):
    method test_singular_data (line 947) | def test_singular_data(self):
    method test_fill_artists (line 966) | def test_fill_artists(self, long_df):
    method test_common_norm (line 979) | def test_common_norm(self, rng):
    method test_log_scale (line 994) | def test_log_scale(self, rng):
    method test_bandwidth (line 1022) | def test_bandwidth(self, rng):
    method test_weights (line 1039) | def test_weights(self, rng):
    method test_hue_ignores_cmap (line 1056) | def test_hue_ignores_cmap(self, long_df):
    method test_contour_line_colors (line 1063) | def test_contour_line_colors(self, long_df):
    method test_contour_line_cmap (line 1071) | def test_contour_line_cmap(self, long_df):
    method test_contour_fill_colors (line 1080) | def test_contour_fill_colors(self, long_df):
    method test_colorbar (line 1094) | def test_colorbar(self, long_df):
    method test_levels_and_thresh (line 1099) | def test_levels_and_thresh(self, long_df):
    method test_quantile_to_level (line 1131) | def test_quantile_to_level(self, rng):
    method test_input_checking (line 1140) | def test_input_checking(self, long_df):
  class TestHistPlotUnivariate (line 1146) | class TestHistPlotUnivariate(SharedAxesLevelTests):
    method get_last_color (line 1150) | def get_last_color(self, ax, element="bars", fill=True):
    method test_color (line 1171) | def test_color(self, long_df, element, fill):
    method test_long_vectors (line 1178) | def test_long_vectors(self, long_df, variable):
    method test_wide_vs_long_data (line 1195) | def test_wide_vs_long_data(self, wide_df):
    method test_flat_vector (line 1208) | def test_flat_vector(self, long_df):
    method test_empty_data (line 1219) | def test_empty_data(self):
    method test_variable_assignment (line 1224) | def test_variable_assignment(self, long_df):
    method test_hue_fill_colors (line 1236) | def test_hue_fill_colors(self, long_df, multiple, element):
    method test_hue_stack (line 1260) | def test_hue_stack(self, long_df):
    method test_hue_fill (line 1281) | def test_hue_fill(self, long_df):
    method test_hue_dodge (line 1304) | def test_hue_dodge(self, long_df):
    method test_hue_as_numpy_dodged (line 1324) | def test_hue_as_numpy_dodged(self, long_df):
    method test_multiple_input_check (line 1335) | def test_multiple_input_check(self, flat_series):
    method test_element_input_check (line 1340) | def test_element_input_check(self, flat_series):
    method test_count_stat (line 1345) | def test_count_stat(self, flat_series):
    method test_density_stat (line 1351) | def test_density_stat(self, flat_series):
    method test_density_stat_common_norm (line 1358) | def test_density_stat_common_norm(self, long_df):
    method test_density_stat_unique_norm (line 1368) | def test_density_stat_unique_norm(self, long_df):
    method height_norm_arg (line 1385) | def height_norm_arg(self, request):
    method test_probability_stat (line 1388) | def test_probability_stat(self, flat_series, height_norm_arg):
    method test_probability_stat_common_norm (line 1394) | def test_probability_stat_common_norm(self, long_df, height_norm_arg):
    method test_probability_stat_unique_norm (line 1403) | def test_probability_stat_unique_norm(self, long_df, height_norm_arg):
    method test_percent_stat (line 1417) | def test_percent_stat(self, flat_series):
    method test_common_bins (line 1423) | def test_common_bins(self, long_df):
    method test_unique_bins (line 1436) | def test_unique_bins(self, wide_df):
    method test_range_with_inf (line 1449) | def test_range_with_inf(self, rng):
    method test_weights_with_missing (line 1456) | def test_weights_with_missing(self, null_df):
    method test_weight_norm (line 1464) | def test_weight_norm(self, rng):
    method test_discrete (line 1479) | def test_discrete(self, long_df):
    method test_discrete_categorical_default (line 1491) | def test_discrete_categorical_default(self, long_df):
    method test_categorical_yaxis_inversion (line 1497) | def test_categorical_yaxis_inversion(self, long_df):
    method test_datetime_scale (line 1503) | def test_datetime_scale(self, long_df):
    method test_kde (line 1511) | def test_kde(self, flat_series, stat):
    method test_kde_with_hue (line 1528) | def test_kde_with_hue(self, long_df, stat, multiple):
    method test_kde_default_cut (line 1552) | def test_kde_default_cut(self, flat_series):
    method test_kde_hue (line 1559) | def test_kde_hue(self, long_df):
    method test_kde_yaxis (line 1569) | def test_kde_yaxis(self, flat_series):
    method test_kde_line_kws (line 1579) | def test_kde_line_kws(self, flat_series):
    method test_kde_singular_data (line 1585) | def test_kde_singular_data(self):
    method test_element_default (line 1597) | def test_element_default(self, long_df):
    method test_bars_no_fill (line 1609) | def test_bars_no_fill(self, flat_series):
    method test_step_fill (line 1617) | def test_step_fill(self, flat_series):
    method test_poly_fill (line 1638) | def test_poly_fill(self, flat_series):
    method test_poly_no_fill (line 1656) | def test_poly_no_fill(self, flat_series):
    method test_step_no_fill (line 1673) | def test_step_no_fill(self, flat_series):
    method test_step_fill_xy (line 1691) | def test_step_fill_xy(self, flat_series):
    method test_step_no_fill_xy (line 1703) | def test_step_no_fill_xy(self, flat_series):
    method test_weighted_histogram (line 1715) | def test_weighted_histogram(self):
    method test_weights_with_auto_bins (line 1722) | def test_weights_with_auto_bins(self, long_df):
    method test_shrink (line 1728) | def test_shrink(self, long_df):
    method test_log_scale_explicit (line 1746) | def test_log_scale_explicit(self, rng):
    method test_log_scale_implicit (line 1755) | def test_log_scale_implicit(self, rng):
    method test_log_scale_dodge (line 1767) | def test_log_scale_dodge(self, rng):
    method test_log_scale_kde (line 1776) | def test_log_scale_kde(self, rng):
    method test_auto_linewidth (line 1787) | def test_auto_linewidth(self, flat_series, fill):
    method test_bar_kwargs (line 1816) | def test_bar_kwargs(self, flat_series):
    method test_step_fill_kwargs (line 1825) | def test_step_fill_kwargs(self, flat_series):
    method test_step_line_kwargs (line 1834) | def test_step_line_kwargs(self, flat_series):
    method test_label (line 1843) | def test_label(self, flat_series):
    method test_default_color_scout_cleanup (line 1850) | def test_default_color_scout_cleanup(self, flat_series):
  class TestHistPlotBivariate (line 1856) | class TestHistPlotBivariate:
    method test_mesh (line 1858) | def test_mesh(self, long_df):
    method test_mesh_with_hue (line 1876) | def test_mesh_with_hue(self, long_df):
    method test_mesh_with_hue_unique_bins (line 1899) | def test_mesh_with_hue_unique_bins(self, long_df):
    method test_mesh_with_col_unique_bins (line 1921) | def test_mesh_with_col_unique_bins(self, long_df):
    method test_mesh_log_scale (line 1943) | def test_mesh_log_scale(self, rng):
    method test_mesh_thresh (line 1961) | def test_mesh_thresh(self, long_df):
    method test_mesh_sticky_edges (line 1974) | def test_mesh_sticky_edges(self, long_df):
    method test_mesh_common_norm (line 1987) | def test_mesh_common_norm(self, long_df):
    method test_mesh_unique_norm (line 2007) | def test_mesh_unique_norm(self, long_df):
    method test_mesh_normalization (line 2028) | def test_mesh_normalization(self, long_df, stat):
    method test_mesh_colors (line 2038) | def test_mesh_colors(self, long_df):
    method test_color_limits (line 2062) | def test_color_limits(self, long_df):
    method test_hue_color_limits (line 2090) | def test_hue_color_limits(self, long_df):
    method test_colorbar (line 2132) | def test_colorbar(self, long_df):
  class TestECDFPlotUnivariate (line 2143) | class TestECDFPlotUnivariate(SharedAxesLevelTests):
    method get_last_color (line 2147) | def get_last_color(self, ax):
    method test_long_vectors (line 2152) | def test_long_vectors(self, long_df, variable):
    method test_hue (line 2171) | def test_hue(self, long_df):
    method test_line_kwargs (line 2178) | def test_line_kwargs(self, long_df):
    method test_drawstyle (line 2191) | def test_drawstyle(self, flat_series, data_var):
    method test_proportion_limits (line 2200) | def test_proportion_limits(self, flat_series, data_var, stat_var):
    method test_proportion_limits_complementary (line 2212) | def test_proportion_limits_complementary(self, flat_series, data_var, ...
    method test_proportion_count (line 2224) | def test_proportion_count(self, flat_series, data_var, stat_var):
    method test_weights (line 2234) | def test_weights(self):
    method test_bivariate_error (line 2240) | def test_bivariate_error(self, long_df):
    method test_log_scale (line 2245) | def test_log_scale(self, long_df):
  class TestDisPlot (line 2259) | class TestDisPlot:
    method test_versus_single_histplot (line 2282) | def test_versus_single_histplot(self, long_df, kwargs):
    method test_versus_single_kdeplot (line 2312) | def test_versus_single_kdeplot(self, long_df, kwargs):
    method test_versus_single_ecdfplot (line 2340) | def test_versus_single_ecdfplot(self, long_df, kwargs):
    method test_with_rug (line 2361) | def test_with_rug(self, long_df, kwargs):
    method test_facets (line 2379) | def test_facets(self, long_df, facet_var):
    method test_facet_multiple (line 2396) | def test_facet_multiple(self, long_df, multiple):
    method test_ax_warning (line 2412) | def test_ax_warning(self, long_df):
    method test_array_faceting (line 2419) | def test_array_faceting(self, long_df, key):
    method test_legend (line 2428) | def test_legend(self, long_df):
    method test_empty (line 2433) | def test_empty(self):
    method test_bivariate_ecdf_error (line 2438) | def test_bivariate_ecdf_error(self, long_df):
    method test_bivariate_kde_norm (line 2443) | def test_bivariate_kde_norm(self, rng):
    method test_bivariate_hist_norm (line 2464) | def test_bivariate_hist_norm(self, rng):
    method test_facetgrid_data (line 2479) | def test_facetgrid_data(self, long_df):
  function integrate (line 2493) | def integrate(y, x):

FILE: tests/test_docstrings.py
  class ExampleClass (line 12) | class ExampleClass:
    method example_method (line 13) | def example_method(self):
  function example_func (line 24) | def example_func():
  class TestDocstringComponents (line 35) | class TestDocstringComponents:
    method test_from_dict (line 37) | def test_from_dict(self):
    method test_from_nested_components (line 42) | def test_from_nested_components(self):
    method test_from_function (line 48) | def test_from_function(self):
    method test_from_method (line 53) | def test_from_method(self):

FILE: tests/test_matrix.py
  class TestHeatmap (line 33) | class TestHeatmap:
    method test_ndarray_input (line 47) | def test_ndarray_input(self):
    method test_array_like_input (line 59) | def test_array_like_input(self):
    method test_df_input (line 77) | def test_df_input(self):
    method test_df_multindex_input (line 89) | def test_df_multindex_input(self):
    method test_mask_input (line 110) | def test_mask_input(self, dtype):
    method test_mask_limits (line 121) | def test_mask_limits(self):
    method test_default_vlims (line 140) | def test_default_vlims(self):
    method test_robust_vlims (line 146) | def test_robust_vlims(self):
    method test_custom_sequential_vlims (line 155) | def test_custom_sequential_vlims(self):
    method test_custom_diverging_vlims (line 165) | def test_custom_diverging_vlims(self):
    method test_array_with_nans (line 176) | def test_array_with_nans(self):
    method test_mask (line 188) | def test_mask(self):
    method test_custom_cmap (line 202) | def test_custom_cmap(self):
    method test_centered_vlims (line 209) | def test_centered_vlims(self):
    method test_default_colors (line 219) | def test_default_colors(self):
    method test_custom_vlim_colors (line 228) | def test_custom_vlim_colors(self):
    method test_custom_center_colors (line 236) | def test_custom_center_colors(self):
    method test_cmap_with_properties (line 244) | def test_cmap_with_properties(self):
    method test_explicit_none_norm (line 283) | def test_explicit_none_norm(self):
    method test_ticklabels_off (line 297) | def test_ticklabels_off(self):
    method test_custom_ticklabels (line 305) | def test_custom_ticklabels(self):
    method test_custom_ticklabel_interval (line 315) | def test_custom_ticklabel_interval(self):
    method test_heatmap_annotation (line 331) | def test_heatmap_annotation(self):
    method test_heatmap_annotation_overwrite_kws (line 339) | def test_heatmap_annotation_overwrite_kws(self):
    method test_heatmap_annotation_with_mask (line 349) | def test_heatmap_annotation_with_mask(self):
    method test_heatmap_annotation_mesh_colors (line 361) | def test_heatmap_annotation_mesh_colors(self):
    method test_heatmap_annotation_other_data (line 369) | def test_heatmap_annotation_other_data(self):
    method test_heatmap_annotation_different_shapes (line 379) | def test_heatmap_annotation_different_shapes(self):
    method test_heatmap_annotation_with_limited_ticklabels (line 385) | def test_heatmap_annotation_with_limited_ticklabels(self):
    method test_heatmap_cbar (line 391) | def test_heatmap_cbar(self):
    method test_heatmap_axes (line 408) | def test_heatmap_axes(self):
    method test_heatmap_ticklabel_rotation (line 423) | def test_heatmap_ticklabel_rotation(self):
    method test_heatmap_inner_lines (line 451) | def test_heatmap_inner_lines(self):
    method test_square_aspect (line 459) | def test_square_aspect(self):
    method test_mask_validation (line 464) | def test_mask_validation(self):
    method test_missing_data_mask (line 478) | def test_missing_data_mask(self):
    method test_cbar_ticks (line 489) | def test_cbar_ticks(self):
  class TestDendrogram (line 498) | class TestDendrogram:
    method test_ndarray_input (line 526) | def test_ndarray_input(self):
    method test_df_input (line 542) | def test_df_input(self):
    method test_df_multindex_input (line 558) | def test_df_multindex_input(self):
    method test_axis0_input (line 577) | def test_axis0_input(self):
    method test_rotate_input (line 594) | def test_rotate_input(self):
    method test_rotate_axis0_input (line 607) | def test_rotate_axis0_input(self):
    method test_custom_linkage (line 615) | def test_custom_linkage(self):
    method test_label_false (line 634) | def test_label_false(self):
    method test_linkage_scipy (line 645) | def test_linkage_scipy(self):
    method test_fastcluster_other_method (line 660) | def test_fastcluster_other_method(self):
    method test_fastcluster_non_euclidean (line 671) | def test_fastcluster_non_euclidean(self):
    method test_dendrogram_plot (line 682) | def test_dendrogram_plot(self):
    method test_dendrogram_rotate (line 695) | def test_dendrogram_rotate(self):
    method test_dendrogram_ticklabel_rotation (line 712) | def test_dendrogram_ticklabel_rotation(self):
  class TestClustermap (line 741) | class TestClustermap:
    method test_ndarray_input (line 780) | def test_ndarray_input(self):
    method test_df_input (line 787) | def test_df_input(self):
    method test_corr_df_input (line 791) | def test_corr_df_input(self):
    method test_pivot_input (line 798) | def test_pivot_input(self):
    method test_colors_input (line 810) | def test_colors_input(self):
    method test_categorical_colors_input (line 822) | def test_categorical_colors_input(self):
    method test_nested_colors_input (line 842) | def test_nested_colors_input(self):
    method test_colors_input_custom_cmap (line 856) | def test_colors_input_custom_cmap(self):
    method test_z_score (line 869) | def test_z_score(self):
    method test_z_score_axis0 (line 878) | def test_z_score_axis0(self):
    method test_standard_scale (line 889) | def test_standard_scale(self):
    method test_standard_scale_axis0 (line 898) | def test_standard_scale_axis0(self):
    method test_z_score_standard_scale (line 909) | def test_z_score_standard_scale(self):
    method test_color_list_to_matrix_and_cmap (line 916) | def test_color_list_to_matrix_and_cmap(self):
    method test_nested_color_list_to_matrix_and_cmap (line 925) | def test_nested_color_list_to_matrix_and_cmap(self):
    method test_color_list_to_matrix_and_cmap_axis1 (line 936) | def test_color_list_to_matrix_and_cmap_axis1(self):
    method test_color_list_to_matrix_and_cmap_different_sizes (line 944) | def test_color_list_to_matrix_and_cmap_different_sizes(self):
    method test_savefig (line 950) | def test_savefig(self):
    method test_plot_dendrograms (line 956) | def test_plot_dendrograms(self):
    method test_cluster_false (line 969) | def test_cluster_false(self):
    method test_row_col_colors (line 985) | def test_row_col_colors(self):
    method test_cluster_false_row_col_colors (line 995) | def test_cluster_false_row_col_colors(self):
    method test_row_col_colors_df (line 1015) | def test_row_col_colors_df(self):
    method test_row_col_colors_df_shuffled (line 1038) | def test_row_col_colors_df_shuffled(self):
    method test_row_col_colors_df_missing (line 1061) | def test_row_col_colors_df_missing(self):
    method test_row_col_colors_df_one_axis (line 1076) | def test_row_col_colors_df_one_axis(self):
    method test_row_col_colors_series (line 1105) | def test_row_col_colors_series(self):
    method test_row_col_colors_series_shuffled (line 1122) | def test_row_col_colors_series_shuffled(self):
    method test_row_col_colors_series_missing (line 1146) | def test_row_col_colors_series_missing(self):
    method test_row_col_colors_ignore_heatmap_kwargs (line 1160) | def test_row_col_colors_ignore_heatmap_kwargs(self):
    method test_row_col_colors_raise_on_mixed_index_types (line 1179) | def test_row_col_colors_raise_on_mixed_index_types(self):
    method test_mask_reorganization (line 1195) | def test_mask_reorganization(self):
    method test_ticklabel_reorganization (line 1211) | def test_ticklabel_reorganization(self):
    method test_noticklabels (line 1230) | def test_noticklabels(self):
    method test_size_ratios (line 1243) | def test_size_ratios(self):
    method test_cbar_pos (line 1305) | def test_cbar_pos(self):
    method test_square_warning (line 1320) | def test_square_warning(self):
    method test_clustermap_annotation (line 1333) | def test_clustermap_annotation(self):
    method test_tree_kws (line 1343) | def test_tree_kws(self):
  function test_required_scipy_errors (line 1354) | def test_required_scipy_errors():

FILE: tests/test_miscplot.py
  class TestPalPlot (line 8) | class TestPalPlot:
    method test_palplot_size (line 10) | def test_palplot_size(self):
  class TestDogPlot (line 28) | class TestDogPlot:
    method test_dogplot (line 31) | def test_dogplot(self):

FILE: tests/test_objects.py
  function test_objects_namespace (line 9) | def test_objects_namespace():

FILE: tests/test_palettes.py
  class TestColorPalettes (line 14) | class TestColorPalettes:
    method test_current_palette (line 16) | def test_current_palette(self):
    method test_palette_context (line 23) | def test_palette_context(self):
    method test_big_palette_context (line 33) | def test_big_palette_context(self):
    method test_palette_size (line 47) | def test_palette_size(self):
    method test_seaborn_palettes (line 64) | def test_seaborn_palettes(self):
    method test_hls_palette (line 73) | def test_hls_palette(self):
    method test_husl_palette (line 83) | def test_husl_palette(self):
    method test_mpl_palette (line 93) | def test_mpl_palette(self):
    method test_mpl_dark_palette (line 105) | def test_mpl_dark_palette(self):
    method test_bad_palette_name (line 115) | def test_bad_palette_name(self):
    method test_terrible_palette_name (line 120) | def test_terrible_palette_name(self):
    method test_bad_palette_colors (line 125) | def test_bad_palette_colors(self):
    method test_palette_desat (line 131) | def test_palette_desat(self):
    method test_palette_is_list_of_tuples (line 138) | def test_palette_is_list_of_tuples(self):
    method test_palette_cycles (line 148) | def test_palette_cycles(self):
    method test_hls_values (line 154) | def test_hls_values(self):
    method test_husl_values (line 171) | def test_husl_values(self):
    method test_cbrewer_qual (line 188) | def test_cbrewer_qual(self):
    method test_mpl_reversal (line 198) | def test_mpl_reversal(self):
    method test_rgb_from_hls (line 204) | def test_rgb_from_hls(self):
    method test_rgb_from_husl (line 211) | def test_rgb_from_husl(self):
    method test_rgb_from_xkcd (line 224) | def test_rgb_from_xkcd(self):
    method test_light_palette (line 231) | def test_light_palette(self):
    method test_dark_palette (line 257) | def test_dark_palette(self):
    method test_diverging_palette (line 283) | def test_diverging_palette(self):
    method test_blend_palette (line 305) | def test_blend_palette(self):
    method test_cubehelix_against_matplotlib (line 317) | def test_cubehelix_against_matplotlib(self):
    method test_cubehelix_n_colors (line 327) | def test_cubehelix_n_colors(self):
    method test_cubehelix_reverse (line 333) | def test_cubehelix_reverse(self):
    method test_cubehelix_cmap (line 339) | def test_cubehelix_cmap(self):
    method test_cubehelix_code (line 353) | def test_cubehelix_code(self):
    method test_xkcd_palette (line 378) | def test_xkcd_palette(self):
    method test_crayon_palette (line 386) | def test_crayon_palette(self):
    method test_color_codes (line 394) | def test_color_codes(self):
    method test_as_hex (line 407) | def test_as_hex(self):
    method test_preserved_palette_length (line 413) | def test_preserved_palette_length(self):
    method test_html_repr (line 419) | def test_html_repr(self):
    method test_colormap_display_patch (line 426) | def test_colormap_display_patch(self):

FILE: tests/test_rcmod.py
  function has_verdana (line 10) | def has_verdana():
  class RCParamFixtures (line 33) | class RCParamFixtures:
    method reset_params (line 36) | def reset_params(self):
    method flatten_list (line 40) | def flatten_list(self, orig_list):
    method assert_rc_params (line 46) | def assert_rc_params(self, params):
    method assert_rc_params_equal (line 58) | def assert_rc_params_equal(self, params1, params2):
  class TestAxesStyle (line 73) | class TestAxesStyle(RCParamFixtures):
    method test_default_return (line 77) | def test_default_return(self):
    method test_key_usage (line 82) | def test_key_usage(self):
    method test_bad_style (line 88) | def test_bad_style(self):
    method test_rc_override (line 93) | def test_rc_override(self):
    method test_set_style (line 100) | def test_set_style(self):
    method test_style_context_manager (line 108) | def test_style_context_manager(self):
    method test_style_context_independence (line 124) | def test_style_context_independence(self):
    method test_set_rc (line 128) | def test_set_rc(self):
    method test_set_with_palette (line 134) | def test_set_with_palette(self):
    method test_reset_defaults (line 157) | def test_reset_defaults(self):
    method test_reset_orig (line 163) | def test_reset_orig(self):
    method test_set_is_alias (line 169) | def test_set_is_alias(self):
  class TestPlottingContext (line 183) | class TestPlottingContext(RCParamFixtures):
    method test_default_return (line 187) | def test_default_return(self):
    method test_key_usage (line 192) | def test_key_usage(self):
    method test_bad_context (line 199) | def test_bad_context(self):
    method test_font_scale (line 204) | def test_font_scale(self):
    method test_rc_override (line 219) | def test_rc_override(self):
    method test_set_context (line 227) | def test_set_context(self):
    method test_context_context_manager (line 235) | def test_context_context_manager(self):
  class TestPalette (line 252) | class TestPalette(RCParamFixtures):
    method test_set_palette (line 254) | def test_set_palette(self):
  class TestFonts (line 273) | class TestFonts(RCParamFixtures):
    method test_set_font (line 278) | def test_set_font(self):
    method test_set_serif_font (line 289) | def test_set_serif_font(self):
    method test_different_sans_serif (line 301) | def test_different_sans_serif(self):

FILE: tests/test_regression.py
  class TestLinearPlotter (line 24) | class TestLinearPlotter:
    method test_establish_variables_from_frame (line 35) | def test_establish_variables_from_frame(self):
    method test_establish_variables_from_series (line 43) | def test_establish_variables_from_series(self):
    method test_establish_variables_from_array (line 51) | def test_establish_variables_from_array(self):
    method test_establish_variables_from_lists (line 61) | def test_establish_variables_from_lists(self):
    method test_establish_variables_from_mix (line 71) | def test_establish_variables_from_mix(self):
    method test_establish_variables_from_bad (line 79) | def test_establish_variables_from_bad(self):
    method test_dropna (line 85) | def test_dropna(self):
  class TestRegressionPlotter (line 98) | class TestRegressionPlotter:
    method test_variables_from_frame (line 121) | def test_variables_from_frame(self):
    method test_variables_from_series (line 130) | def test_variables_from_series(self):
    method test_variables_from_mix (line 139) | def test_variables_from_mix(self):
    method test_variables_must_be_1d (line 147) | def test_variables_must_be_1d(self):
    method test_dropna (line 156) | def test_dropna(self):
    method test_singleton (line 168) | def test_singleton(self, x, y):
    method test_ci (line 172) | def test_ci(self):
    method test_fast_regression (line 187) | def test_fast_regression(self):
    method test_regress_poly (line 201) | def test_regress_poly(self):
    method test_statsmodels_missing_errors (line 216) | def test_statsmodels_missing_errors(self, long_df, option):
    method test_regress_logx (line 220) | def test_regress_logx(self):
    method test_regress_n_boot (line 235) | def test_regress_n_boot(self):
    method test_regress_without_boots
Condensed preview — 310 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,897K chars).
[
  {
    "path": ".github/CONTRIBUTING.md",
    "chars": 2323,
    "preview": "Contributing to seaborn\n=======================\n\nGeneral support\n---------------\n\nGeneral support questions (\"how do I d"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 218,
    "preview": "version: 2\nupdates:\n  # Maintain dependencies for GitHub Actions\n  - package-ecosystem: \"github-actions\"\n    directory: "
  },
  {
    "path": ".github/workflows/ci.yaml",
    "chars": 2899,
    "preview": "name: CI\n\non:\n  push:\n    branches: [master, v0.*]\n  pull_request:\n    branches: master\n  schedule:\n    - cron:  '0 6 * "
  },
  {
    "path": ".gitignore",
    "chars": 156,
    "preview": "*.pyc\n*.sw*\nbuild/\n.ipynb_checkpoints/\ndist/\nseaborn.egg-info/\n.cache/\n.coverage\ncover/\nhtmlcov/\n.idea/\n.vscode/\n.pytest"
  },
  {
    "path": ".pre-commit-config.yaml",
    "chars": 540,
    "preview": "repos:\n-   repo: https://github.com/pre-commit/pre-commit-hooks\n    rev: v4.3.0\n    hooks:\n    -   id: check-yaml\n    - "
  },
  {
    "path": "CITATION.cff",
    "chars": 512,
    "preview": "cff-version: 1.2.0\nmessage: \"If seaborn is integral to a scientific publication, please cite the following paper:\"\nprefe"
  },
  {
    "path": "LICENSE.md",
    "chars": 1491,
    "preview": "Copyright (c) 2012-2023, Michael L. Waskom\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with"
  },
  {
    "path": "Makefile",
    "chars": 219,
    "preview": "export SHELL := /bin/bash\n\ntest:\n\tpytest -n auto --cov=seaborn --cov=tests --cov-config=setup.cfg tests\n\nlint:\n\tflake8 s"
  },
  {
    "path": "README.md",
    "chars": 3519,
    "preview": "<img src=\"https://raw.githubusercontent.com/mwaskom/seaborn/master/doc/_static/logo-wide-lightbg.svg\"><br>\n\n------------"
  },
  {
    "path": "SECURITY.md",
    "chars": 726,
    "preview": "# Security Policy\n\nIf you have discovered a security vulnerability in this project, please report it\nprivately. **Do not"
  },
  {
    "path": "ci/cache_datasets.py",
    "chars": 643,
    "preview": "\"\"\"\nCache test datasets before running tests / building docs.\n\nAvoids race conditions that would arise from parallelizat"
  },
  {
    "path": "ci/check_gallery.py",
    "chars": 348,
    "preview": "\"\"\"Execute the scripts that comprise the example gallery in the online docs.\"\"\"\nfrom glob import glob\nimport matplotlib."
  },
  {
    "path": "ci/deps_pinned.txt",
    "chars": 95,
    "preview": "numpy~=1.26.0\npandas~=2.0.0\nmatplotlib~=3.8.0\nscipy~=1.11.0\nstatsmodels~=0.14.0\npillow~=10.3.0\n"
  },
  {
    "path": "ci/getmsfonts.sh",
    "chars": 142,
    "preview": "echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections\napt-get inst"
  },
  {
    "path": "doc/.gitignore",
    "chars": 111,
    "preview": "*_files/\n_build/\ngenerated/\nexamples/\nexample_thumbs/*.png\ndocstrings/\ntutorial/\ntutorial/_images\ntutorial.rst\n"
  },
  {
    "path": "doc/Makefile",
    "chars": 6010,
    "preview": "# Makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS    =\nSPHINXBUILD "
  },
  {
    "path": "doc/README.md",
    "chars": 1156,
    "preview": "Building the seaborn docs\n=========================\n\nBuilding the docs requires additional dependencies; they can be ins"
  },
  {
    "path": "doc/_docstrings/FacetGrid.ipynb",
    "chars": 8383,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"tags\": [\n     \"hide\"\n    ]\n "
  },
  {
    "path": "doc/_docstrings/JointGrid.ipynb",
    "chars": 6082,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"tags\": [\n     \"hide\"\n    ]\n "
  },
  {
    "path": "doc/_docstrings/Makefile",
    "chars": 408,
    "preview": "rst_files := $(patsubst %.ipynb,../docstrings/%.rst,$(wildcard *.ipynb))\nexport MPLBACKEND := module://matplotlib_inline"
  },
  {
    "path": "doc/_docstrings/PairGrid.ipynb",
    "chars": 6566,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"tags\": [\n     \"hide\"\n    ]\n "
  },
  {
    "path": "doc/_docstrings/axes_style.ipynb",
    "chars": 1924,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"dated-mother\",\n   \"metadata\": {\n    \"tag"
  },
  {
    "path": "doc/_docstrings/barplot.ipynb",
    "chars": 7093,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"6a6d582b-08c2-4fed-be56-afa1b986943a\",\n "
  },
  {
    "path": "doc/_docstrings/blend_palette.ipynb",
    "chars": 2146,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"8f97280e-cec8-42b2-a968-4fd4364594f8\",\n "
  },
  {
    "path": "doc/_docstrings/boxenplot.ipynb",
    "chars": 7029,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"882d215b-88d8-4b5e-ae7a-0e3f6bb53bad\",\n "
  },
  {
    "path": "doc/_docstrings/boxplot.ipynb",
    "chars": 5038,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"7edcf92f-6c11-4dc4-b684-118b3235d067\",\n "
  },
  {
    "path": "doc/_docstrings/catplot.ipynb",
    "chars": 4579,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"a8aa6a6a-f6c0-4a6b-9460-2056e58a2e13\",\n "
  },
  {
    "path": "doc/_docstrings/clustermap.ipynb",
    "chars": 3900,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"ffc1e1d9-fa74-4121-aa87-e1a8665e4c2b\",\n "
  },
  {
    "path": "doc/_docstrings/color_palette.ipynb",
    "chars": 5235,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"tags\": [\n     \"hide\"\n    ]\n "
  },
  {
    "path": "doc/_docstrings/countplot.ipynb",
    "chars": 1949,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"2fdf0f63-d515-4cb8-b3e0-62cac7852b12\",\n "
  },
  {
    "path": "doc/_docstrings/cubehelix_palette.ipynb",
    "chars": 4649,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"60aebc68-2c7c-4af5-a159-8421e1f94ba6\",\n "
  },
  {
    "path": "doc/_docstrings/dark_palette.ipynb",
    "chars": 2816,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"5cd1cbb8-ba1a-460b-8e3a-bc285867f1d1\",\n "
  },
  {
    "path": "doc/_docstrings/displot.ipynb",
    "chars": 5515,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"tags\": [\n     \"hide\"\n    ]\n "
  },
  {
    "path": "doc/_docstrings/diverging_palette.ipynb",
    "chars": 3781,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"01295cb6-cc7a-4c6d-94cf-9b0e6cde9fa7\",\n "
  },
  {
    "path": "doc/_docstrings/ecdfplot.ipynb",
    "chars": 2957,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Plot a univariate distribution alon"
  },
  {
    "path": "doc/_docstrings/heatmap.ipynb",
    "chars": 4373,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"987b9549-532e-4091-a6cf-007d1b23e825\",\n "
  },
  {
    "path": "doc/_docstrings/histplot.ipynb",
    "chars": 11278,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"tags\": [\n     \"hide\"\n    ]\n "
  },
  {
    "path": "doc/_docstrings/hls_palette.ipynb",
    "chars": 3160,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"158cd1cf-6b30-4054-b32f-a166fcb883be\",\n "
  },
  {
    "path": "doc/_docstrings/husl_palette.ipynb",
    "chars": 3081,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"a6794650-f28f-40eb-95a7-3f0e5c4b332d\",\n "
  },
  {
    "path": "doc/_docstrings/jointplot.ipynb",
    "chars": 4753,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"tags\": [\n     \"hide\"\n    ]\n "
  },
  {
    "path": "doc/_docstrings/kdeplot.ipynb",
    "chars": 7040,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"tags\": [\n     \"hide\"\n    ]\n "
  },
  {
    "path": "doc/_docstrings/light_palette.ipynb",
    "chars": 2822,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"5cd1cbb8-ba1a-460b-8e3a-bc285867f1d1\",\n "
  },
  {
    "path": "doc/_docstrings/lineplot.ipynb",
    "chars": 10463,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"tags\": [\n     \"hide\"\n    ]\n "
  },
  {
    "path": "doc/_docstrings/lmplot.ipynb",
    "chars": 3631,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"raw\",\n   \"id\": \"034a9a5b-91ff-4ccc-932d-0f314e2cd6d2\",\n   \"metadata\": {},\n   \"source\""
  },
  {
    "path": "doc/_docstrings/move_legend.ipynb",
    "chars": 3953,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"8ec46ad8-bc4c-4ee0-9626-271088c702f9\",\n "
  },
  {
    "path": "doc/_docstrings/mpl_palette.ipynb",
    "chars": 2868,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"1d0d41d3-463c-4c6f-aa65-38131bdf3ddb\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Agg.ipynb",
    "chars": 3331,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"0d053943-66c9-410d-ad65-ce91f1c1ff48\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Area.ipynb",
    "chars": 3667,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"2923956c-f141-4ecb-ab08-e819099f0fa9\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Band.ipynb",
    "chars": 3481,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"2923956c-f141-4ecb-ab08-e819099f0fa9\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Bar.ipynb",
    "chars": 4384,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"2923956c-f141-4ecb-ab08-e819099f0fa9\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Bars.ipynb",
    "chars": 3985,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"2923956c-f141-4ecb-ab08-e819099f0fa9\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Count.ipynb",
    "chars": 2694,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"89113d6b-70b9-4ebe-9910-10a80eab246e\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Dash.ipynb",
    "chars": 3712,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"3227e585-7166-44e7-b0c2-8570e098102d\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Dodge.ipynb",
    "chars": 4544,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"4d44a940-db84-4e16-bc83-e67d08d6d56a\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Dot.ipynb",
    "chars": 4498,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"2923956c-f141-4ecb-ab08-e819099f0fa9\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Dots.ipynb",
    "chars": 3218,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"2923956c-f141-4ecb-ab08-e819099f0fa9\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Est.ipynb",
    "chars": 3810,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"57ececfa-0ae0-4acb-b85d-7c6a6ca8d3db\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Hist.ipynb",
    "chars": 5425,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"59690096-a0ad-4ff3-b82c-0258d724035a\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Jitter.ipynb",
    "chars": 4200,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"f2e5a85d-c710-492b-a4fc-09b45ae26471\",\n "
  },
  {
    "path": "doc/_docstrings/objects.KDE.ipynb",
    "chars": 6188,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"dcc1ae12-bba4-4de9-af8d-543b3d65b42b\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Line.ipynb",
    "chars": 4053,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"2923956c-f141-4ecb-ab08-e819099f0fa9\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Lines.ipynb",
    "chars": 2283,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"2923956c-f141-4ecb-ab08-e819099f0fa9\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Norm.ipynb",
    "chars": 2147,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"0bfee8b6-1e3e-499d-96ae-735a5c230b32\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Path.ipynb",
    "chars": 1997,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"2923956c-f141-4ecb-ab08-e819099f0fa9\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Paths.ipynb",
    "chars": 2384,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"2923956c-f141-4ecb-ab08-e819099f0fa9\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Perc.ipynb",
    "chars": 2826,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"2d44a326-029b-47ff-b560-5f4b6a4bb73f\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Plot.add.ipynb",
    "chars": 6685,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"9252d5a5-8af1-4f99-b799-ee044329fb23\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Plot.config.ipynb",
    "chars": 4929,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"a38a6fed-51de-4dbc-8d5b-4971d06acf2e\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Plot.facet.ipynb",
    "chars": 5176,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"raw\",\n   \"id\": \"fb8e120d-5dcf-483b-a0d1-74857d09ce7d\",\n   \"metadata\": {},\n   \"source\""
  },
  {
    "path": "doc/_docstrings/objects.Plot.label.ipynb",
    "chars": 5921,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"9252d5a5-8af1-4f99-b799-ee044329fb23\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Plot.layout.ipynb",
    "chars": 2814,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"9252d5a5-8af1-4f99-b799-ee044329fb23\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Plot.limit.ipynb",
    "chars": 2528,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"9252d5a5-8af1-4f99-b799-ee044329fb23\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Plot.on.ipynb",
    "chars": 5018,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"raw\",\n   \"id\": \"fb8e120d-5dcf-483b-a0d1-74857d09ce7d\",\n   \"metadata\": {},\n   \"source\""
  },
  {
    "path": "doc/_docstrings/objects.Plot.pair.ipynb",
    "chars": 5338,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"raw\",\n   \"id\": \"ac7814b6-1e2c-4f0e-991b-7fe78fca4346\",\n   \"metadata\": {},\n   \"source\""
  },
  {
    "path": "doc/_docstrings/objects.Plot.scale.ipynb",
    "chars": 7980,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"9252d5a5-8af1-4f99-b799-ee044329fb23\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Plot.share.ipynb",
    "chars": 2911,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"9252d5a5-8af1-4f99-b799-ee044329fb23\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Plot.theme.ipynb",
    "chars": 4299,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"9252d5a5-8af1-4f99-b799-ee044329fb23\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Range.ipynb",
    "chars": 3542,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"2923956c-f141-4ecb-ab08-e819099f0fa9\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Shift.ipynb",
    "chars": 2151,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"2605c8d0-5872-4dff-9172-db81fac1cee1\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Stack.ipynb",
    "chars": 2087,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"87244f49-8cf2-4668-a556-a8c7828b31bf\",\n "
  },
  {
    "path": "doc/_docstrings/objects.Text.ipynb",
    "chars": 4452,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"cd1cdefe-b8c1-40b9-be31-006d52ec9f18\",\n "
  },
  {
    "path": "doc/_docstrings/pairplot.ipynb",
    "chars": 4898,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"tags\": [\n     \"hide\"\n    ]\n "
  },
  {
    "path": "doc/_docstrings/plotting_context.ipynb",
    "chars": 2074,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"perceived-worry\",\n   \"metadata\": {\n    \""
  },
  {
    "path": "doc/_docstrings/pointplot.ipynb",
    "chars": 6558,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"43f842ee-44c9-476b-ab08-112d23e2effb\",\n "
  },
  {
    "path": "doc/_docstrings/regplot.ipynb",
    "chars": 5688,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"611aed40-d120-4fbf-b1e6-9712ed8167fc\",\n "
  },
  {
    "path": "doc/_docstrings/relplot.ipynb",
    "chars": 6740,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"raw\",\n   \"metadata\": {},\n   \"source\": [\n    \"These examples will illustrate only some"
  },
  {
    "path": "doc/_docstrings/residplot.ipynb",
    "chars": 2518,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"776f8271-21ed-4707-a1ad-09d8c63ae95a\",\n "
  },
  {
    "path": "doc/_docstrings/rugplot.ipynb",
    "chars": 2928,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Add a rug along one of the axes:\"\n "
  },
  {
    "path": "doc/_docstrings/scatterplot.ipynb",
    "chars": 7624,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"tags\": [\n     \"hide\"\n    ]\n "
  },
  {
    "path": "doc/_docstrings/set_context.ipynb",
    "chars": 2101,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"thorough-equipment\",\n   \"metadata\": {\n  "
  },
  {
    "path": "doc/_docstrings/set_style.ipynb",
    "chars": 1713,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"practical-announcement\",\n   \"metadata\": "
  },
  {
    "path": "doc/_docstrings/set_theme.ipynb",
    "chars": 3596,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"flush-block\",\n   \"metadata\": {\n    \"tags"
  },
  {
    "path": "doc/_docstrings/stripplot.ipynb",
    "chars": 7312,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"tags\": [\n     \"hide\"\n    ]\n "
  },
  {
    "path": "doc/_docstrings/swarmplot.ipynb",
    "chars": 7008,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"tags\": [\n     \"hide\"\n    ]\n "
  },
  {
    "path": "doc/_docstrings/violinplot.ipynb",
    "chars": 8096,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"cc19031c-bc2f-4294-95ce-3a2d9b86f44d\",\n "
  },
  {
    "path": "doc/_static/copybutton.js",
    "chars": 2652,
    "preview": "// originally taken from scikit-learn's Sphinx theme\n$(document).ready(function() {\n    /* Add a [>>>] button on the top"
  },
  {
    "path": "doc/_static/css/custom.css",
    "chars": 2232,
    "preview": "/**** Overriding theme defaults ****/\n\nhtml[data-theme=light]{\n  --pst-color-primary: rgb(52, 54, 99);\n  --pst-color-sec"
  },
  {
    "path": "doc/_templates/autosummary/base.rst",
    "chars": 106,
    "preview": "{{ fullname | escape | underline}}\n\n.. currentmodule:: {{ module }}\n\n.. auto{{ objtype }}:: {{ objname }}\n"
  },
  {
    "path": "doc/_templates/autosummary/class.rst",
    "chars": 550,
    "preview": "{{ fullname | escape | underline}}\n\n.. currentmodule:: {{ module }}\n\n.. autoclass:: {{ objname }}\n\n   {% block methods %"
  },
  {
    "path": "doc/_templates/autosummary/object.rst",
    "chars": 98,
    "preview": "{{ fullname | escape | underline}}\n\n.. currentmodule:: {{ module }}\n\n.. autoclass:: {{ objname }}\n"
  },
  {
    "path": "doc/_templates/autosummary/plot.rst",
    "chars": 1043,
    "preview": "{{ fullname | escape | underline}}\n\n.. currentmodule:: {{ module }}\n\n.. autoclass:: {{ objname }}\n\n{% block methods %}\n\n"
  },
  {
    "path": "doc/_templates/autosummary/scale.rst",
    "chars": 149,
    "preview": "{{ fullname | escape | underline}}\n\n.. currentmodule:: {{ module }}\n\n.. autoclass:: {{ objname }}\n\n   .. automethod:: ti"
  },
  {
    "path": "doc/_templates/layout.html",
    "chars": 1377,
    "preview": "{% extends \"!layout.html\" %}\n\n{%- block footer %}\n<footer class=\"footer\" style=\"border-top: 1px solid #ccc; padding-top:"
  },
  {
    "path": "doc/_templates/version.html",
    "chars": 86,
    "preview": "<div id=\"version\" class=\"navbar-start-item\" style=\"color: #bbb\">\n{{ version }}\n</div>\n"
  },
  {
    "path": "doc/_tutorial/Makefile",
    "chars": 258,
    "preview": "rst_files := $(patsubst %.ipynb,../tutorial/%.rst,$(wildcard *.ipynb))\nexport MPLBACKEND := module://matplotlib_inline.b"
  },
  {
    "path": "doc/_tutorial/aesthetics.ipynb",
    "chars": 11990,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"raw\",\n   \"metadata\": {},\n   \"source\": [\n    \".. _aesthetics_tutorial:\\n\",\n    \"\\n\",\n "
  },
  {
    "path": "doc/_tutorial/axis_grids.ipynb",
    "chars": 19991,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"raw\",\n   \"metadata\": {},\n   \"source\": [\n    \".. _grid_tutorial:\\n\",\n    \"\\n\",\n    \".."
  },
  {
    "path": "doc/_tutorial/categorical.ipynb",
    "chars": 19832,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"raw\",\n   \"metadata\": {},\n   \"source\": [\n    \".. _categorical_tutorial:\\n\",\n    \"\\n\",\n"
  },
  {
    "path": "doc/_tutorial/color_palettes.ipynb",
    "chars": 35065,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"raw\",\n   \"metadata\": {\n    \"raw_mimetype\": \"text/restructuredtext\"\n   },\n   \"source\":"
  },
  {
    "path": "doc/_tutorial/data_structure.ipynb",
    "chars": 19941,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"raw\",\n   \"metadata\": {},\n   \"source\": [\n    \".. _data_tutorial:\\n\",\n    \"\\n\",\n    \".."
  },
  {
    "path": "doc/_tutorial/distributions.ipynb",
    "chars": 28886,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"raw\",\n   \"metadata\": {},\n   \"source\": [\n    \".. _distribution_tutorial:\\n\",\n    \"\\n\","
  },
  {
    "path": "doc/_tutorial/error_bars.ipynb",
    "chars": 15114,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"raw\",\n   \"metadata\": {},\n   \"source\": [\n    \".. _errorbar_tutorial:\\n\",\n    \"\\n\",\n   "
  },
  {
    "path": "doc/_tutorial/function_overview.ipynb",
    "chars": 19650,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"raw\",\n   \"metadata\": {},\n   \"source\": [\n    \".. _function_tutorial:\\n\",\n    \"\\n\",\n   "
  },
  {
    "path": "doc/_tutorial/introduction.ipynb",
    "chars": 18228,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"raw\",\n   \"metadata\": {},\n   \"source\": [\n    \".. _introduction:\\n\",\n    \"\\n\",\n    \".. "
  },
  {
    "path": "doc/_tutorial/objects_interface.ipynb",
    "chars": 35238,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"raw\",\n   \"id\": \"35110bb9-6889-4bd5-b9d6-5a0479131433\",\n   \"metadata\": {},\n   \"source\""
  },
  {
    "path": "doc/_tutorial/properties.ipynb",
    "chars": 34853,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"raw\",\n   \"id\": \"6cb222bb-4781-48b6-9675-c0ba195b5efb\",\n   \"metadata\": {},\n   \"source\""
  },
  {
    "path": "doc/_tutorial/regression.ipynb",
    "chars": 15407,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"raw\",\n   \"metadata\": {},\n   \"source\": [\n    \".. _regression_tutorial:\\n\",\n    \"\\n\",\n "
  },
  {
    "path": "doc/_tutorial/relational.ipynb",
    "chars": 21730,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"raw\",\n   \"metadata\": {},\n   \"source\": [\n    \".. _relational_tutorial:\\n\",\n    \"\\n\",\n "
  },
  {
    "path": "doc/api.rst",
    "chars": 3965,
    "preview": ".. _api_ref:\n\nAPI reference\n=============\n\n.. currentmodule:: seaborn.objects\n\n.. _objects_api:\n\nObjects interface\n-----"
  },
  {
    "path": "doc/citing.rst",
    "chars": 1590,
    "preview": ".. _citing:\n\nCiting and logo\n===============\n\nCiting seaborn\n--------------\n\nIf seaborn is integral to a scientific publ"
  },
  {
    "path": "doc/conf.py",
    "chars": 5823,
    "preview": "# Configuration file for the Sphinx documentation builder.\n#\n# This file only contains a selection of the most common op"
  },
  {
    "path": "doc/example_thumbs/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "doc/faq.rst",
    "chars": 29857,
    "preview": ".. currentmodule:: seaborn\n\nFrequently asked questions\n==========================\n\nThis is a collection of answers to qu"
  },
  {
    "path": "doc/index.rst",
    "chars": 3209,
    "preview": ":html_theme.sidebar_secondary.remove:\n\nseaborn: statistical data visualization\n=======================================\n\n"
  },
  {
    "path": "doc/installing.rst",
    "chars": 5351,
    "preview": ".. _installing:\n\n.. currentmodule:: seaborn\n\nInstalling and getting started\n------------------------------\n\nOfficial rel"
  },
  {
    "path": "doc/make.bat",
    "chars": 800,
    "preview": "@ECHO OFF\r\n\r\npushd %~dp0\r\n\r\nREM Command file for Sphinx documentation\r\n\r\nif \"%SPHINXBUILD%\" == \"\" (\r\n\tset SPHINXBUILD=sp"
  },
  {
    "path": "doc/matplotlibrc",
    "chars": 21,
    "preview": "savefig.bbox : tight\n"
  },
  {
    "path": "doc/sphinxext/gallery_generator.py",
    "chars": 10739,
    "preview": "\"\"\"\nSphinx plugin to run example scripts and create a gallery page.\n\nLightly modified from the mpld3 project.\n\n\"\"\"\nimpor"
  },
  {
    "path": "doc/sphinxext/tutorial_builder.py",
    "chars": 11271,
    "preview": "from pathlib import Path\nimport warnings\n\nfrom jinja2 import Environment\nimport yaml\n\nimport numpy as np\nimport matplotl"
  },
  {
    "path": "doc/tools/extract_examples.py",
    "chars": 1775,
    "preview": "\"\"\"Turn the examples section of a function docstring into a notebook.\"\"\"\nimport re\nimport sys\nimport pydoc\nimport seabor"
  },
  {
    "path": "doc/tools/generate_logos.py",
    "chars": 6982,
    "preview": "import numpy as np\nimport seaborn as sns\nfrom matplotlib import patches\nimport matplotlib.pyplot as plt\nfrom scipy.signa"
  },
  {
    "path": "doc/tools/nb_to_doc.py",
    "chars": 5919,
    "preview": "#! /usr/bin/env python\n\"\"\"Execute a .ipynb file, write out a processed .rst and clean .ipynb.\n\nSome functions in this sc"
  },
  {
    "path": "doc/tools/set_nb_kernels.py",
    "chars": 535,
    "preview": "\"\"\"Recursively set the kernel name for all jupyter notebook files.\"\"\"\nimport sys\nfrom glob import glob\n\nimport nbformat\n"
  },
  {
    "path": "doc/tutorial.yaml",
    "chars": 483,
    "preview": "- title:\n  pages:\n    - introduction\n- title: API Overview\n  pages:\n    - function_overview\n    - data_structure\n- title"
  },
  {
    "path": "doc/whatsnew/index.rst",
    "chars": 830,
    "preview": ".. _whatsnew:\n\nWhat's new in each version\n==========================\n\nv0.13\n-----\n.. toctree::\n   :maxdepth: 2\n\n   v0.13"
  },
  {
    "path": "doc/whatsnew/v0.10.0.rst",
    "chars": 1268,
    "preview": "\nv0.10.0 (January 2020)\n----------------------\n\nThis is a major update that is being released simultaneously with versio"
  },
  {
    "path": "doc/whatsnew/v0.10.1.rst",
    "chars": 1234,
    "preview": "\nv0.10.1 (April 2020)\n--------------------\n\nThis is minor release with bug fixes for issues identified since 0.10.0.\n\n- "
  },
  {
    "path": "doc/whatsnew/v0.11.0.rst",
    "chars": 17019,
    "preview": "\nv0.11.0 (September 2020)\n------------------------\n\nThis is a major release with several important new features, enhance"
  },
  {
    "path": "doc/whatsnew/v0.11.1.rst",
    "chars": 2269,
    "preview": "\nv0.11.1 (December 2020)\n-----------------------\n\nThis a bug fix release and is a recommended upgrade for all users on v"
  },
  {
    "path": "doc/whatsnew/v0.11.2.rst",
    "chars": 5165,
    "preview": "\nv0.11.2 (August 2021)\n---------------------\n\nThis is a minor release that addresses issues in the v0.11 series and adds"
  },
  {
    "path": "doc/whatsnew/v0.12.0.rst",
    "chars": 10659,
    "preview": "v0.12.0 (September 2022)\n------------------------\n\nIntroduction of the objects interface\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
  },
  {
    "path": "doc/whatsnew/v0.12.1.rst",
    "chars": 2265,
    "preview": "\nv0.12.1 (October 2022)\n----------------------\n\nThis is an incremental release that is a recommended upgrade for all use"
  },
  {
    "path": "doc/whatsnew/v0.12.2.rst",
    "chars": 1375,
    "preview": "\nv0.12.2 (December 2022)\n-----------------------\n\nThis is an incremental release that is a recommended upgrade for all u"
  },
  {
    "path": "doc/whatsnew/v0.13.0.rst",
    "chars": 12604,
    "preview": "v0.13.0 (September 2023)\n------------------------\n\nThis is a major release with a number of important new features and c"
  },
  {
    "path": "doc/whatsnew/v0.13.1.rst",
    "chars": 1327,
    "preview": "v0.13.1 (December 2023)\n-----------------------\n\nThis is a minor release with some bug fixes and a couple new features. "
  },
  {
    "path": "doc/whatsnew/v0.13.2.rst",
    "chars": 182,
    "preview": "v0.13.2 (January 2024)\n----------------------\n\nThis is a minor release containing internal changes that adapt to upcomin"
  },
  {
    "path": "doc/whatsnew/v0.2.0.rst",
    "chars": 5790,
    "preview": "\nv0.2.0 (December 2013)\n----------------------\n\nThis is a major release from 0.1 with a number of API changes, enhanceme"
  },
  {
    "path": "doc/whatsnew/v0.2.1.rst",
    "chars": 829,
    "preview": "\nv0.2.1 (December 2013)\n----------------------\n\nThis is a bugfix release, with no new features.\n\nBug fixes\n~~~~~~~~~\n\n- "
  },
  {
    "path": "doc/whatsnew/v0.3.0.rst",
    "chars": 6530,
    "preview": "\nv0.3.0 (March 2014)\n-------------------\n\nThis is a major release from 0.2 with a number of enhancements to the plotting"
  },
  {
    "path": "doc/whatsnew/v0.3.1.rst",
    "chars": 993,
    "preview": "\nv0.3.1 (April 2014)\n-------------------\n\nThis is a minor release from 0.3 with fixes for several bugs.\n\nPlotting functi"
  },
  {
    "path": "doc/whatsnew/v0.4.0.rst",
    "chars": 4236,
    "preview": "\nv0.4.0 (September 2014)\n-----------------------\n\nThis is a major release from 0.3. Highlights include new approaches fo"
  },
  {
    "path": "doc/whatsnew/v0.5.0.rst",
    "chars": 4663,
    "preview": "\nv0.5.0 (November 2014)\n--------------------------\n\nThis is a major release from 0.4. Highlights include new functions f"
  },
  {
    "path": "doc/whatsnew/v0.5.1.rst",
    "chars": 602,
    "preview": "\nv0.5.1 (November 2014)\n----------------------\n\nThis is a bugfix release that includes a workaround for an issue in matp"
  },
  {
    "path": "doc/whatsnew/v0.6.0.rst",
    "chars": 11154,
    "preview": "\nv0.6.0 (June 2015)\n------------------\n\nThis is a major release from 0.5. The main objective of this release was to unif"
  },
  {
    "path": "doc/whatsnew/v0.7.0.rst",
    "chars": 2811,
    "preview": "\nv0.7.0 (January 2016)\n---------------------\n\nThis is a major release from 0.6. The main new feature is :func:`swarmplot"
  },
  {
    "path": "doc/whatsnew/v0.7.1.rst",
    "chars": 1999,
    "preview": "\nv0.7.1 (June 2016)\n-------------------\n\n- Added the ability to put \"caps\" on the error bars that are drawn by :func:`ba"
  },
  {
    "path": "doc/whatsnew/v0.8.0.rst",
    "chars": 4369,
    "preview": "\nv0.8.0 (July 2017)\n------------------\n\n- The default style is no longer applied when seaborn is imported. It is now nec"
  },
  {
    "path": "doc/whatsnew/v0.8.1.rst",
    "chars": 1444,
    "preview": "\nv0.8.1 (September 2017)\n-----------------------\n\n- Added a warning in :class:`FacetGrid` when passing a categorical plo"
  },
  {
    "path": "doc/whatsnew/v0.9.0.rst",
    "chars": 10773,
    "preview": "\nv0.9.0 (July 2018)\n------------------\n\nThis is a major release with several substantial and long-desired new features. "
  },
  {
    "path": "doc/whatsnew/v0.9.1.rst",
    "chars": 4936,
    "preview": "\nv0.9.1 (January 2020)\n---------------------\n\nThis is a minor release with a number of bug fixes and adaptations to chan"
  },
  {
    "path": "examples/.gitignore",
    "chars": 16,
    "preview": "*.html\n*_files/\n"
  },
  {
    "path": "examples/anscombes_quartet.py",
    "chars": 422,
    "preview": "\"\"\"\nAnscombe's quartet\n==================\n\n_thumb: .4, .4\n\"\"\"\nimport seaborn as sns\nsns.set_theme(style=\"ticks\")\n\n# Load"
  },
  {
    "path": "examples/different_scatter_variables.py",
    "chars": 769,
    "preview": "\"\"\"\nScatterplot with multiple semantics\n===================================\n\n_thumb: .45, .5\n\n\"\"\"\nimport seaborn as sns\n"
  },
  {
    "path": "examples/errorband_lineplots.py",
    "chars": 387,
    "preview": "\"\"\"\nTimeseries plot with error bands\n================================\n\n_thumb: .48, .45\n\n\"\"\"\nimport seaborn as sns\nsns.s"
  },
  {
    "path": "examples/faceted_histogram.py",
    "chars": 329,
    "preview": "\"\"\"\nFacetting histograms by subsets of data\n=======================================\n\n_thumb: .33, .57\n\"\"\"\nimport seaborn"
  },
  {
    "path": "examples/faceted_lineplot.py",
    "chars": 524,
    "preview": "\"\"\"\nLine plots on multiple facets\n=============================\n\n_thumb: .48, .42\n\n\"\"\"\nimport seaborn as sns\nsns.set_the"
  },
  {
    "path": "examples/grouped_barplot.py",
    "chars": 431,
    "preview": "\"\"\"\nGrouped barplots\n================\n\n_thumb: .36, .5\n\"\"\"\nimport seaborn as sns\nsns.set_theme(style=\"whitegrid\")\n\npengu"
  },
  {
    "path": "examples/grouped_boxplot.py",
    "chars": 390,
    "preview": "\"\"\"\nGrouped boxplots\n================\n\n_thumb: .66, .45\n\n\"\"\"\nimport seaborn as sns\nsns.set_theme(style=\"ticks\", palette="
  },
  {
    "path": "examples/grouped_violinplots.py",
    "chars": 460,
    "preview": "\"\"\"\nGrouped violinplots with split violins\n======================================\n\n_thumb: .44, .47\n\"\"\"\nimport seaborn a"
  },
  {
    "path": "examples/heat_scatter.py",
    "chars": 1118,
    "preview": "\"\"\"\nScatterplot heatmap\n-------------------\n\n_thumb: .5, .5\n\n\"\"\"\nimport seaborn as sns\nsns.set_theme(style=\"whitegrid\")\n"
  },
  {
    "path": "examples/hexbin_marginals.py",
    "chars": 323,
    "preview": "\"\"\"\nHexbin plot with marginal distributions\n=======================================\n\n_thumb: .45, .4\n\"\"\"\nimport numpy as"
  },
  {
    "path": "examples/histogram_stacked.py",
    "chars": 562,
    "preview": "\"\"\"\nStacked histogram on a log scale\n================================\n\n_thumb: .5, .45\n\n\"\"\"\nimport seaborn as sns\nimport"
  },
  {
    "path": "examples/horizontal_boxplot.py",
    "chars": 743,
    "preview": "\"\"\"\nHorizontal boxplot with observations\n====================================\n\n_thumb: .7, .37\n\"\"\"\nimport seaborn as sns"
  },
  {
    "path": "examples/jitter_stripplot.py",
    "chars": 1059,
    "preview": "\"\"\"\nConditional means with observations\n===================================\n\n\"\"\"\nimport seaborn as sns\nimport matplotlib"
  },
  {
    "path": "examples/joint_histogram.py",
    "chars": 696,
    "preview": "\"\"\"\nJoint and marginal histograms\n=============================\n\n_thumb: .52, .505\n\n\"\"\"\nimport seaborn as sns\nsns.set_th"
  },
  {
    "path": "examples/joint_kde.py",
    "chars": 381,
    "preview": "\"\"\"\nJoint kernel density estimate\n=============================\n\n_thumb: .6, .4\n\"\"\"\nimport seaborn as sns\nsns.set_theme("
  },
  {
    "path": "examples/kde_ridgeplot.py",
    "chars": 1374,
    "preview": "\"\"\"\nOverlapping densities ('ridge plot')\n====================================\n\n\n\"\"\"\nimport numpy as np\nimport pandas as "
  },
  {
    "path": "examples/large_distributions.py",
    "chars": 355,
    "preview": "\"\"\"\nPlotting large distributions\n============================\n\n\"\"\"\nimport seaborn as sns\nsns.set_theme(style=\"whitegrid\""
  },
  {
    "path": "examples/layered_bivariate_plot.py",
    "chars": 617,
    "preview": "\"\"\"\nBivariate plot with multiple elements\n=====================================\n\n\n\"\"\"\nimport numpy as np\nimport seaborn "
  },
  {
    "path": "examples/logistic_regression.py",
    "chars": 538,
    "preview": "\"\"\"\nFaceted logistic regression\n===========================\n\n_thumb: .58, .5\n\"\"\"\nimport seaborn as sns\nsns.set_theme(sty"
  },
  {
    "path": "examples/many_facets.py",
    "chars": 1110,
    "preview": "\"\"\"\nPlotting on a large number of facets\n====================================\n\n_thumb: .4, .3\n\n\"\"\"\nimport numpy as np\nim"
  },
  {
    "path": "examples/many_pairwise_correlations.py",
    "chars": 908,
    "preview": "\"\"\"\nPlotting a diagonal correlation matrix\n======================================\n\n_thumb: .3, .6\n\"\"\"\nfrom string import"
  },
  {
    "path": "examples/marginal_ticks.py",
    "chars": 491,
    "preview": "\"\"\"\nScatterplot with marginal ticks\n===============================\n\n_thumb: .66, .34\n\"\"\"\nimport seaborn as sns\nsns.set_"
  },
  {
    "path": "examples/multiple_bivariate_kde.py",
    "chars": 482,
    "preview": "\"\"\"\nMultiple bivariate KDE plots\n============================\n\n_thumb: .6, .45\n\"\"\"\nimport seaborn as sns\nimport matplotl"
  },
  {
    "path": "examples/multiple_conditional_kde.py",
    "chars": 452,
    "preview": "\"\"\"\nConditional kernel density estimate\n===================================\n\n_thumb: .4, .5\n\"\"\"\nimport seaborn as sns\nsn"
  },
  {
    "path": "examples/multiple_ecdf.py",
    "chars": 381,
    "preview": "\"\"\"\nFacetted ECDF plots\n===================\n\n_thumb: .30, .49\n\"\"\"\nimport seaborn as sns\nsns.set_theme(style=\"ticks\")\nmpg"
  },
  {
    "path": "examples/multiple_regression.py",
    "chars": 481,
    "preview": "\"\"\"\nMultiple linear regression\n==========================\n\n_thumb: .45, .45\n\"\"\"\nimport seaborn as sns\nsns.set_theme()\n\n#"
  },
  {
    "path": "examples/pair_grid_with_kde.py",
    "chars": 317,
    "preview": "\"\"\"\nPaired density and scatterplot matrix\n=====================================\n\n_thumb: .5, .5\n\"\"\"\nimport seaborn as sn"
  },
  {
    "path": "examples/paired_pointplots.py",
    "chars": 537,
    "preview": "\"\"\"\nPaired categorical plots\n========================\n\n\"\"\"\nimport seaborn as sns\nsns.set_theme(style=\"whitegrid\")\n\n# Loa"
  },
  {
    "path": "examples/pairgrid_dotplot.py",
    "chars": 1096,
    "preview": "\"\"\"\nDot plot with several variables\n===============================\n\n_thumb: .3, .3\n\"\"\"\nimport seaborn as sns\nsns.set_th"
  },
  {
    "path": "examples/palette_choices.py",
    "chars": 1013,
    "preview": "\"\"\"\nColor palette choices\n=====================\n\n\"\"\"\nimport numpy as np\nimport seaborn as sns\nimport matplotlib.pyplot a"
  },
  {
    "path": "examples/palette_generation.py",
    "chars": 891,
    "preview": "\"\"\"\nDifferent cubehelix palettes\n============================\n\n_thumb: .4, .65\n\"\"\"\nimport numpy as np\nimport seaborn as "
  },
  {
    "path": "examples/part_whole_bars.py",
    "chars": 868,
    "preview": "\"\"\"\nHorizontal bar plots\n====================\n\n\"\"\"\nimport seaborn as sns\nimport matplotlib.pyplot as plt\nsns.set_theme(s"
  },
  {
    "path": "examples/pointplot_anova.py",
    "chars": 483,
    "preview": "\"\"\"\nPlotting a three-way ANOVA\n==========================\n\n_thumb: .42, .5\n\"\"\"\nimport seaborn as sns\nsns.set_theme(style"
  },
  {
    "path": "examples/radial_facets.py",
    "chars": 747,
    "preview": "\"\"\"\nFacetGrid with custom projection\n================================\n\n_thumb: .33, .5\n\n\"\"\"\nimport numpy as np\nimport pa"
  },
  {
    "path": "examples/regression_marginals.py",
    "chars": 390,
    "preview": "\"\"\"\nLinear regression with marginal distributions\n=============================================\n\n_thumb: .65, .65\n\"\"\"\nim"
  },
  {
    "path": "examples/residplot.py",
    "chars": 362,
    "preview": "\"\"\"\nPlotting model residuals\n========================\n\n\"\"\"\nimport numpy as np\nimport seaborn as sns\nsns.set_theme(style="
  },
  {
    "path": "examples/scatter_bubbles.py",
    "chars": 451,
    "preview": "\"\"\"\nScatterplot with varying point sizes and hues\n==============================================\n\n_thumb: .45, .5\n\n\"\"\"\ni"
  },
  {
    "path": "examples/scatterplot_categorical.py",
    "chars": 386,
    "preview": "\"\"\"\nScatterplot with categorical variables\n======================================\n\n_thumb: .45, .45\n\n\"\"\"\nimport seaborn "
  },
  {
    "path": "examples/scatterplot_matrix.py",
    "chars": 180,
    "preview": "\"\"\"\nScatterplot Matrix\n==================\n\n_thumb: .3, .2\n\"\"\"\nimport seaborn as sns\nsns.set_theme(style=\"ticks\")\n\ndf = s"
  }
]

// ... and 110 more files (download for full content)

About this extraction

This page contains the full source code of the mwaskom/seaborn GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 310 files (2.6 MB), approximately 691.3k tokens, and a symbol index with 2798 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!