Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update seaborn to 0.13.2 #62

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

pyup-bot
Copy link
Collaborator

This PR updates seaborn from 0.11.2 to 0.13.2.

Changelog

0.13.2

This is a minor release containing internal changes that adapt to upcoming deprecations in pandas. All users are encouraged to update.

0.13.1

This is a minor release with some bug fixes and a couple new features. All users are encouraged to update.

- |Feature| Added support for weighted mean estimation (with boostrap CIs) in `lineplot`, `barplot`, `pointplot`, and `objects.Est` (3580, 3586).

- |Feature| Added the `extent` option in `objects.Plot.layout` (3552).

- |Fix| Fixed a regression in v0.13.0 that triggered an exception when working with non-numpy data types (3516).

- |Fix| Fixed a bug in `objects.Plot` so that tick labels are shown for wrapped axes that aren't in the bottom-most row (3600).

- |Fix| Fixed a bug in `catplot` where a blank legend would be added when `hue` was redundantly assigned (3540).

- |Fix| Fixed a bug in `catplot` where the `edgecolor` parameter was ignored with `kind="bar"` (3547).

- |Fix| Fixed a bug in `boxplot` where an exception was raised when using the matplotlib `bootstrap` option (3562).

- |Fix| Fixed a bug in `lineplot` where an exception was raised when `hue` was assigned with an empty dataframe (3569).

- |Fix| Fixed a bug in multiple categorical plots that raised with `hue=None` and `dodge=True`; this is now has no effect (3605).

0.13.0

**See the [online docs](https://seaborn.pydata.org/whatsnew/v0.13.0.html) for an annotated version of these notes with working links.**

This is a major release with a number of important new features and changes. The highlight is a major overhaul to seaborn's categorical plotting functions, providing them with many new capabilities and better aligning their API with the rest of the library. There is also provisional support for alternate dataframe libraries like [polars](https://www.pola.rs), a new theme and display configuration system for `objects.Plot`, and many smaller bugfixes and enhancements.

Updating is recommended, but users are encouraged to carefully check the outputs of existing code that uses the categorical functions, and they should be aware of some deprecations and intentional changes to the default appearance of the resulting plots (see notes below with and tags).

Major enhancements to categorical plots

Seaborn's `categorical functions <categorical_api>` have been completely rewritten for this release. This provided the opportunity to address some longstanding quirks as well as to add a number of smaller but much-desired features and enhancements.

Support for numeric and datetime data

The categorical functions have historically treated *all* data as categorical, even when it has a numeric or datetime type. This can now be controlled with the new <span class="title-ref">native_scale</span> parameter. The default remains <span class="title-ref">False</span> to preserve existing behavior. But with <span class="title-ref">native_scale=True</span>, values will be treated as they would by other seaborn or matplotlib functions. Element widths will be derived from the minimum distance between two unique values on the categorical axis.

Additionally, while seaborn previously determined the mapping from categorical values to ordinal positions internally, this is now delegated to matplotlib. The change should mostly be transparent to the user, but categorical plots (even with <span class="title-ref">native_scale=False</span>) will better align with artists added by other seaborn or matplotlib functions in most cases, and matplotlib's interactive machinery will work better.

Changes to color defaults and specification

The categorical functions now act more like the rest of seaborn in that they will produce a plot with a single main color unless the <span class="title-ref">hue</span> variable is assigned. Previously, there would be an implicit redundant color mapping (e.g., each box in a boxplot would get a separate color from the default palette). To retain the previous behavior, explicitly assign a redundant <span class="title-ref">hue</span> variable (e.g., <span class="title-ref">boxplot(data, x="x", y="y", hue="x")</span>).

Two related idiosyncratic color specifications are deprecated, but they will continue to work (with a warning) for one release cycle:

- Passing a <span class="title-ref">palette</span> without explicitly assigning <span class="title-ref">hue</span> is no longer supported (add an explicitly redundant <span class="title-ref">hue</span> assignment instead).
- Passing a <span class="title-ref">color</span> while assigning <span class="title-ref">hue</span> to produce a gradient is no longer supported (use <span class="title-ref">palette="dark:{color}"</span> or <span class="title-ref">palette="light:{color}"</span> instead).

Finally, like other seaborn functions, the default palette now depends on the variable type, and a sequential palette will be used with numeric data. To retain the previous behavior, pass the name of a qualitative palette (e.g., <span class="title-ref">palette="deep"</span> for seaborn's default). Accordingly, the functions have gained a parameter to control numeric color mappings (<span class="title-ref">hue_norm</span>).

Other features, enhancements, and changes

The following updates apply to multiple categorical functions.

- All functions now accept a <span class="title-ref">legend</span> parameter, which can be a boolean (to suppress the legend) or one of <span class="title-ref">{"auto", "brief", "full"}</span> to control the amount of information shown in the legend for a numerical color mapping.
- All functions now accept a callable <span class="title-ref">formatter</span> parameter to control the string representation of the data.
- All functions that draw a solid patch now accept a boolean <span class="title-ref">fill</span> parameter, which when set to <span class="title-ref">False</span> will draw line-art elements.
- All functions that support dodging now have an additional <span class="title-ref">gap</span> parameter that can be set to a non-zero value to leave space between dodged elements.
- The `boxplot`, `boxenplot`, and `violinplot` functions now support a single <span class="title-ref">linecolor</span> parameter.
- The default value for <span class="title-ref">dodge</span> has changed from <span class="title-ref">True</span> to <span class="title-ref">"auto"</span>. With <span class="title-ref">"auto"</span>, elements will dodge only when at least one set of elements would otherwise overlap.
- When the value axis of the plot has a non-linear scale, the statistical operations (e.g. an aggregation in `pointplot` or the kernel density fit in `violinplot`) are now applied in that scale space.
- All functions now accept a <span class="title-ref">log_scale</span> parameter. With a single argument, this will set the scale on the "value" axis (*opposite* the categorical axis). A tuple will set each axis directly (although setting a log scale categorical axis also requires <span class="title-ref">native_scale=True</span>).
- The <span class="title-ref">orient</span> parameter now accepts <span class="title-ref">"x"/"y"</span> to specify the categorical axis, matching the objects interface.
- The categorical functions are generally more deferential to the user's additional matplotlib keyword arguments.
- Using <span class="title-ref">"gray"</span> to select an automatic gray value that complements the main palette is now deprecated in favor of <span class="title-ref">"auto"</span>.

The following updates are function-specific.

- In `pointplot`, a single `matplotlib.lines.Line2D` artist is now used rather than adding separate `matplotlib.collections.PathCollection` artist for the points. As a result, it is now possible to pass additional keyword arguments for complete customization the appearance of both the lines and markers; additionally, the legend representation is improved. Accordingly, parameters that previously allowed only partial customization (<span class="title-ref">scale</span>, <span class="title-ref">join</span>, and <span class="title-ref">errwidth</span>) are now deprecated. The old parameters will now trigger detailed warning messages with instructions for adapting existing code.
- The bandwidth specification in `violinplot` better aligns with `kdeplot`, as the <span class="title-ref">bw</span> parameter is now deprecated in favor of <span class="title-ref">bw_method</span> and <span class="title-ref">bw_adjust</span>.
- In `boxenplot`, the boxen are now drawn with separate patch artists in each tail. This may have consequences for code that works with the underlying artists, but it produces a better result for low-alpha / unfilled plots and enables proper area/density scaling.
- In `barplot`, the <span class="title-ref">errcolor</span> and <span class="title-ref">errwidth</span> parameters are now deprecated in favor of a more general <span class="title-ref">err_kws</span>\` dictionary. The existing parameters will continue to work for two releases.
- In `violinplot`, the <span class="title-ref">scale</span> and <span class="title-ref">scale_hue</span> parameters have been renamed to <span class="title-ref">density_norm</span> and <span class="title-ref">common_norm</span> for clarity and to reflect the fact that common normalization is now applied over both hue and faceting variables in `catplot`.
- In `boxenplot`, the <span class="title-ref">scale</span> parameter has been renamed to <span class="title-ref">width_method</span> as part of a broader effort to de-confound the meaning of "scale" in seaborn parameters.
- When passing a vector to the <span class="title-ref">data</span> parameter of `barplot` or `pointplot`, a bar or point will be drawn for each entry in the vector rather than plotting a single aggregated value. To retain the previous behavior, assign the vector to the <span class="title-ref">y</span> variable.
- In `boxplot`, the default flier marker now follows the matplotlib rcparams so that it can be globally customized.
- When using <span class="title-ref">split=True</span> and <span class="title-ref">inner="box"</span> in `violinplot`, a separate mini-box is now drawn for each split violin.
- In `boxenplot`, all plots now use a consistent luminance ramp for the different box levels. This leads to a change in the appearance of existing plots, but reduces the chances of a misleading result.
- The <span class="title-ref">"area"</span> scaling in `boxenplot` now approximates the density of the underlying observations, including for asymmetric distributions. This produces a substantial change in the appearance of plots with <span class="title-ref">width_method="area"</span>, although the existing behavior was poorly defined.
- In `countplot`, the new <span class="title-ref">stat</span> parameter can be used to apply a normalization (e.g to show a <span class="title-ref">"percent"</span> or <span class="title-ref">"proportion"</span>).
- The <span class="title-ref">split</span> parameter in `violinplot` is now more general and can be set to <span class="title-ref">True</span> regardless of the number of <span class="title-ref">hue</span> variable levels (or even without <span class="title-ref">hue</span>). This is probably most useful for showing half violins.
- In `violinplot`, the new <span class="title-ref">inner_kws</span> parameter allows additional control over the interior artists.
- It is no longer required to use a <span class="title-ref">DataFrame</span> in `catplot`, as data vectors can now be passed directly.
- In `boxplot`, the artists that comprise each box plot are now packaged in a <span class="title-ref">BoxPlotContainer</span> for easier post-plotting access.

Support for alternate dataframe libraries

- Nearly all functions / objects now use the [dataframe exchange protocol](https://data-apis.org/dataframe-protocol/latest/index.html) to accept <span class="title-ref">DataFrame</span> objects from libraries other than <span class="title-ref">pandas</span> (e.g. <span class="title-ref">polars</span>). Note that seaborn will still convert the data object to pandas internally, but this feature will simplify code for users of other dataframe libraries (`3369`).

Improved configuration for the objects interface

- Added control over the default theme to `objects.Plot` (`3223`)
- Added control over the default notebook display to `objects.Plot` (`3225`).
- Added the concept of a "layer legend" in `objects.Plot` via the new <span class="title-ref">label</span> parameter in `objects.Plot.add` (`3456`).
- In `objects.Plot.scale`, `objects.Plot.limit`, and `objects.Plot.label` the <span class="title-ref">x</span> / <span class="title-ref">y</span> parameters can be used to set a common scale / limit / label for paired subplots (`3458`).

Other updates

- Improved the legend display for relational and categorical functions to better represent the user's additional keyword arguments (`3467`).
- In `ecdfplot`, <span class="title-ref">stat="percent"</span> is now a valid option (`3336`).
- Data values outside the scale transform domain (e.g. non-positive values with a log scale) are now dropped prior to any statistical operations (`3488`).
- In `histplot`, infinite values are now ignored when choosing the default bin range (`3488`).
- There is now generalized support for performing statistics in the appropriate space based on axes scales; previously support for this was spotty and at best worked only for log scales (`3440`).
- Updated `load_dataset` to use an approach more compatible with <span class="title-ref">pyiodide</span> (`3234`).
- Support for array-typed palettes is now deprecated. This was not previously documented as supported, but it worked by accident in a few places (`3452`).
- In `histplot`, treatment of the <span class="title-ref">binwidth</span> parameter has changed such that the actual bin width will be only approximately equal to the requested width when that value does not evenly divide the bin range. This fixes an issue where the largest data value was sometimes dropped due to floating point error (`3489`).
- Fixed `objects.Bar` and `objects.Bars` widths when using a nonlinear scale (`3217`).
- Worked around an issue in matplotlib that caused incorrect results in `move_legend` when <span class="title-ref">labels</span> were provided (`3454`).
- Fixed a bug introduced in v0.12.0 where `histplot` added a stray empty <span class="title-ref">BarContainer</span> (`3246`).
- Fixed a bug where `objects.Plot.on` would override a figure's layout engine (`3216`).
- Fixed a bug introduced in v0.12.0 where `lineplot` with a list of tuples for the keyword argument dashes caused a TypeError (`3316`).
- Fixed a bug in `PairGrid` that caused an exception when the input dataframe had a column multiindex (`3407`).
- Improved a few edge cases when using pandas nullable dtypes (`3394`).

0.13.0rc0

This is a release candidate for seaborn v0.13.0, a major release with a complete overhaul of seaborn's categorical plotting functions.

Please test the release candidate, especially the categorical plots. The internals of these functions have been completely rewritten to provide new functionality and to better align with the rest of the library. There are some intentional changes to default behavior / deprecations, but also the potential for unintentional breakage. Please help surface any examples of the latter prior to final release.

See the [Release Notes](https://github.com/mwaskom/seaborn/blob/master/doc/whatsnew/v0.13.0.rst) for more information about the new features and changes.

Please open a GitHub issue with a reproducible example demonstrating any problems that you encounter. The final release is targeted for the end of September.

0.12.2

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

This is an incremental release that is a recommended upgrade for all users. It is very likely the final release of the 0.12 series and the last version to support Python 3.7.

- |Feature| Added the `objects.KDE` stat (3111).

- |Feature| Added the `objects.Boolean` scale (3205).

- |Enhancement| Improved user feedback for failures during plot compilation by catching exceptions and re-raising with a `PlotSpecError` that provides additional context. (3203).

- |Fix| Improved calculation of automatic mark widths with unshared facet axes (3119).

- |Fix| Improved robustness to empty data in several components of the objects interface (3202).

- |Fix| Fixed a bug where legends for numeric variables with large values would be incorrectly shown (i.e. with a missing offset or exponent; 3187).

- |Fix| Fixed a regression in v0.12.0 where manually-added labels could have duplicate legend entries (3116).

- |Fix| Fixed a bug in `histplot` with `kde=True` and `log_scale=True` where the curve was not scaled properly (3173).

- |Fix| Fixed a bug in `relplot` where inner axis labels would be shown when axis sharing was disabled (3180).

- |Fix| Fixed a bug in `objects.Continuous` to avoid an exception with boolean data (3190).

0.12.1

This is an incremental release that is a recommended upgrade for all
users. It addresses a handful of bugs / regressions in v0.12.0 and adds
several features and enhancements to the new [objects interface](http://seaborn.pydata.org/tutorial/objects_interface).

- Added the `objects.Text` mark (3051).
- Added the `objects.Dash` mark (3074).
- Added the `objects.Perc` stat (3063).
- Added the `objects.Count` stat (3086).
- The `objects.Band` and `objects.Range` marks will now cover the full
extent of the data if `min` / `max` variables are not explicitly assigned or
added in a transform (3056).
- The `objects.Jitter` move now applies a small amount of jitter by
default (3066).
- Axes with a `objects.Nominal` scale now appear like categorical axes
in classic seaborn, with fixed margins, no grid, and an inverted y
axis (3069).
- The `objects.Continuous.label` method now accepts `base=None` to override the default formatter
with a log transform (3087).
- Marks that sort along the orient axis (e.g. `objects.Line`) now use a
stable algorithm (3064).
- Added a `label` parameter to `pointplot`,
which addresses a regression in 0.12.0 when `pointplot` is passed to
`FacetGrid` (3016).
- Fixed a bug that caused an exception when more than two layers with
the same mappings were added to `objects.Plot` (3055).
- Made `objects.PolyFit` robust to missing data (3010).
- Fixed a bug in `objects.Plot` that occurred when data assigned to the
orient coordinate had zero variance (3084).
- Fixed a regression in `kdeplot` where passing `cmap` for an unfilled bivariate plot would
raise an exception (3065).
- Addressed a performance regression in `lineplot` with a large number
of unique x values (3081).
- Seaborn no longer contains doctest-style examples, simplifying the
testing infrastructure (3034).

0.12.0

Introduction of the objects interface

This release debuts the <span class="title-ref">seaborn.objects</span> interface, an entirely new approach to making plots with seaborn. It is the product of several years of design and 16 months of implementation work. The interface aims to provide a more declarative, composable, and extensible API for making statistical graphics. It is inspired by Wilkinson's grammar of graphics, offering a Pythonic API that is informed by the design of libraries such as <span class="title-ref">ggplot2</span> and <span class="title-ref">vega-lite</span> along with lessons from the past 10 years of seaborn's development.

For more information and numerous examples, see the [tutorial chapter](http://seaborn.pydata.org//tutorial/objects_interface) and [API reference](http://seaborn.pydata.org/api.html#objects-interface).

This initial release should be considered "experimental". While it is stable enough for serious use, there are definitely some rough edges, and some key features remain to be implemented. It is possible that breaking changes may occur over the next few minor releases. Please be patient with any limitations that you encounter and help the development by reporting issues when you find behavior surprising.

Keyword-only arguments

Seaborn's plotting functions now require explicit keywords for most arguments, following the deprecation of positional arguments in v0.11.0. With this enforcement, most functions have also had their parameter lists rearranged so that <span class="title-ref">data</span> is the first and only positional argument. This adds consistency across the various functions in the library. It also means that calling <span class="title-ref">func(data)</span> will do something for nearly all functions (those that support wide-form data) and that `pandas.DataFrame` can be piped directly into a plot. It is possible that the signatures will be loosened a bit in future releases so that <span class="title-ref">x</span> and <span class="title-ref">y</span> can be positional, but minimal support for positional arguments after this change will reduce the chance of inadvertent mis-specification (`2804`).

Modernization of categorical scatterplots

This release begins the process of modernizing the categorical plots, beginning with `stripplot` and `swarmplot`. These functions are sporting some enhancements that alleviate a few long-running frustrations (`2413`, `2447`):

-   The new `native_scale` parameter allows numeric or datetime categories to be plotted with their original scale rather than converted to strings and plotted at fixed intervals.
-   The new `formatter` parameter allows more control over the string representation of values on the categorical axis. There should also be improved defaults for some types, such as dates.
-   It is now possible to assign `hue` when using only one coordinate variable (i.e. only `x` or `y`).
-   It is now possible to disable the legend.

The updates also harmonize behavior with functions that have been more recently introduced. This should be relatively non-disruptive, although a few defaults will change:

-   The functions now hook into matplotlib's unit system for plotting categorical data. (Seaborn's categorical functions actually predate support for categorical data in matplotlib.) This should mostly be transparent to the user, but it may resolve a few edge cases. For example, matplotlib interactivity should work better (e.g., for showing the data value under the cursor).
-   A color palette is no longer applied to levels of the categorical variable by default. It is now necessary to explicitly assign <span class="title-ref">hue</span> to see multiple colors (i.e., assign the same variable to <span class="title-ref">x</span>/<span class="title-ref">y</span> and <span class="title-ref">hue</span>). Passing <span class="title-ref">palette</span> without <span class="title-ref">hue</span> will continue to be honored for one release cycle.
-   Numeric <span class="title-ref">hue</span> variables now receive a continuous mapping by default, using the same rules as `scatterplot`. Pass <span class="title-ref">palette="deep"</span> to reproduce previous defaults.
-   The plots now follow the default property cycle; i.e. calling an axes-level function multiple times with the same active axes will produce different-colored artists.
-   Currently, assigning <span class="title-ref">hue</span> and then passing a <span class="title-ref">color</span> will produce a gradient palette. This is now deprecated, as it is easy to request a gradient with, e.g. <span class="title-ref">palette="light:blue"</span>.

Similar enhancements / updates should be expected to roll out to other categorical plotting functions in future releases. There are also several function-specific enhancements:

-   In `stripplot`, a "strip" with a single observation will be plotted without jitter (`2413`)
-   In `swarmplot`, the points are now swarmed at draw time, meaning that the plot will adapt to further changes in axis scaling or tweaks to the plot layout (`2443`).
-   In `swarmplot`, the proportion of points that must overlap before issuing a warning can now be controlled with the <span class="title-ref">warn_thresh</span> parameter (`2447`).
-   In `swarmplot`, the order of the points in each swarm now matches the order in the original dataset; previously they were sorted. This affects only the underlying data stored in the matplotlib artist, not the visual representation (`2443`).

More flexible errorbars

Increased the flexibility of what can be shown by the internally-calculated errorbars for `lineplot`, `barplot`, and `pointplot`.

With the new <span class="title-ref">errorbar</span> parameter, it is now possible to select bootstrap confidence intervals, percentile / predictive intervals, or intervals formed by scaled standard deviations or standard errors. The parameter also accepts an arbitrary function that maps from a vector to an interval. There is a new [user guide chapter](https://seaborn.pydata.org/tutorial/error_bars) demonstrating these options and explaining when you might want to use each one.

As a consequence of this change, the <span class="title-ref">ci</span> parameter has been deprecated. Note that `regplot` retains the previous API, but it will likely be updated in a future release (`2407`, `2866`).

Other updates

-   It is now possible to aggregate / sort a `lineplot` along the y axis using <span class="title-ref">orient="y"</span> (`2854`).
-   Made it easier to customize `FacetGrid` / `PairGrid` / `JointGrid` with a fluent (method-chained) style by adding <span class="title-ref">apply</span>/ <span class="title-ref">pipe</span> methods. Additionally, fixed the <span class="title-ref">tight_layout</span> and <span class="title-ref">refline</span> methods so that they return <span class="title-ref">self</span> (`2926`).
-   Added `FacetGrid.tick_params` and `PairGrid.tick_params` to customize the appearance of the ticks, tick labels, and gridlines of all subplots at once (`2944`).
-   Added a <span class="title-ref">width</span> parameter to `barplot` (`2860`).
-   It is now possible to specify <span class="title-ref">estimator</span> as a string in `barplot` and `pointplot`, in addition to a callable (`2866`).
-   Error bars in `regplot` now inherit the alpha value of the points they correspond to (`2540`).
-   When using `pairplot` with <span class="title-ref">corner=True</span> and <span class="title-ref">diag_kind=None</span>, the top left y axis label is no longer hidden (`2850`).
-   It is now possible to plot a discrete `histplot` as a step function or polygon (`2859`).
-   It is now possible to customize the appearance of elements in a `boxenplot` with <span class="title-ref">box_kws</span>/<span class="title-ref">line_kws</span>/<span class="title-ref">flier_kws</span> (`2909`).
-   Improved integration with the matplotlib color cycle in most axes-level functions (`2449`).
-   Fixed a regression in 0.11.2 that caused some functions to stall indefinitely or raise when the input data had a duplicate index (`2776`).
-   Fixed a bug in `histplot` and `kdeplot` where weights were not factored into the normalization (`2812`).
-   Fixed two edgecases in `histplot` when only <span class="title-ref">binwidth</span> was provided (`2813`).
-   Fixed a bug in `violinplot` where inner boxes/points could be missing with unpaired split violins (`2814`).
-   Fixed a bug in `PairGrid` where an error would be raised when defining <span class="title-ref">hue</span> only in the mapping methods (`2847`).
-   Fixed a bug in `scatterplot` where an error would be raised when <span class="title-ref">hue_order</span> was a subset of the hue levels (`2848`).
-   Fixed a bug in `histplot` where dodged bars would have different widths on a log scale (`2849`).
-   In `lineplot`, allowed the <span class="title-ref">dashes</span> keyword to set the style of a line without mapping a <span class="title-ref">style</span> variable (`2449`).
-   Improved support in `relplot` for "wide" data and for faceting variables passed as non-pandas objects (`2846`).
-   Subplot titles will no longer be reset when calling `FacetGrid.map` or `FacetGrid.map_dataframe` (`2705`).
-   Added a workaround for a matplotlib issue that caused figure-level functions to freeze when <span class="title-ref">plt.show</span> was called (`2925`).
-   Improved robustness to numerical errors in `kdeplot` (`2862`).
-   Fixed a bug where `rugplot` was ignoring expand_margins=False (`2953`).
-   The <span class="title-ref">patch.facecolor</span> rc param is no longer set by `set_palette` (or `set_theme`). This should have no general effect, because the matplotlib default is now <span class="title-ref">"C0"</span> (`2906`).
-   Made <span class="title-ref">scipy</span> an optional dependency and added <span class="title-ref">pip install seaborn\[stats\]</span> as a method for ensuring the availability of compatible <span class="title-ref">scipy</span> and <span class="title-ref">statsmodels</span> libraries at install time. This has a few minor implications for existing code, which are explained in the Github pull request (`2398`).
-   Example datasets are now stored in an OS-specific cache location (as determined by <span class="title-ref">appdirs</span>) rather than in the user's home directory. Users should feel free to remove <span class="title-ref">\~/seaborn-data</span> if desired (`2773`).
-   The unit test suite is no longer part of the source or wheel distribution. Seaborn has never had a runtime API for exercising the tests, so this should not have workflow implications (`2833`).
-   Following [NEP29](https://numpy.org/neps/nep-0029-deprecation_policy.html), dropped support for Python 3.6 and bumped the minimally-supported versions of the library dependencies.
-   Removed the previously-deprecated <span class="title-ref">factorplot</span> along with several previously-deprecated utility functions (<span class="title-ref">iqr</span>, <span class="title-ref">percentiles</span>, <span class="title-ref">pmf_hist</span>, and <span class="title-ref">sort_df</span>).
-   Removed the (previously-unused) option to pass additional keyword arguments to `pointplot`.

0.12.0rc0

There were several renamings and API changes from the final beta release. See the referenced PRs for more information on each change.

Mark renamings

- `Scatter` -> `Dots` (2942)
- `Ribbon` -> `Band` (2945)
- `Interval` -> `Range` (2945)

`Plot` API changes

- The `stat=` and `move=` parameters were removed from `Plot.add`, which now has the following signature: `Plot.add(mark, *transforms, ...)`. (2948)
- The `Plot.configure` method was renamed to `Plot.layout`, with the `figsize` parameter changed to `size`. The `share{x,y}` parameters were removed from `Plot.layout`, with that functionality now supported by the new `Plot.share` method. (2954)

Additionally, the install extra for including statistical packages was changed from `seaborn[all]` to `seaborn[stats]`. (2939)

0.12.0b3

Changes from the second beta release:

Objects interface

- Added `Est` stat for aggregating with a flexible error bar interval (2912)
- Added `Interval` mark for drawing lines perpendicular to the orient axis (2912)
- Added `Plot.theme` for basic control over figure appearance (2929)
- Expanded `Plot.label` to control plot titles (2934)
- Fixed `Plot.scale` so that it applies to variables added during the stat transform (2915)
- Fixed a bug where the `Plot.configure` spec would not persist after further method calls (2917)
- Fixed a bug where dot marks ignored the `artist_kws` parameter (2921)

Function interface

- Added `.apply` and `.pipe` methods to `FacetGrid`/`PairGrid`/`JointGrid` for fluent customization (2928)
- Added a workaround for an issue in matplotlib that caused figure-level plots to freeze or close (2925)

0.12.0b2

Changes from the first beta release:

Objects interface

- Added `Plot.label` method for controlling axis labels/legend titles (2902)
- Added `Plot.limit` method for controlling axis limits (2898)
- Added `Bars`, a more efficient mark for histograms, and improved performance of `Bar` mark as well (2893)
- Improved the visual appearance of the `Area` and `Ribbon` marks used a simpler matplotlib artist class for them (2896)
- Improved the visual appearance of the `Bar` mark (2889)

0.12.0b1

Changes from the final alpha release:

Objects interface

- Improve tick label defaults and customization (2877)
 - Add `Scale.label` interface for formatting tick labels
 - Fix a bug where unshared axes would use the same locator
 - Default to scientific notation for log scale ticks
 - Default to log-spaced ticks with symlog scale
 - Shorten `transform` parameter name to `trans`
 - Simplify internal type structure
- Allow suppression of legend for individual layers (2834)

Function interface

- Add new `errorbar` API to `pointplot` and `barplot` (2866)
- Add `width` parameter to `barplot` (2860)
- Add `orient` parameter to `lineplot` (2854)
- Allow `histplot` to draw discrete histograms with step or poly marks (2859)
- Downgrade exception in relational plots with palette of incorrect length to a warning (2856)
- Use alpha from point mark for error bars in `regplot` (2853)
- Improve user-friendliness of `jointplot` (2863)
- Preserve upper left y axis label in `pointplot` with `corner=True` and `diag_kind=None` (2850)
- Improve support for anonymous data objects in `relplot` (2846)
- Fix `histplot` dodged bar widths with log scale (2849)
- Fix `hue_order` as a subset in `scatterplot` (2848)
- Fix several bugs in the new categorical scatterplot features (2845)

0.12.0a1

This is the second alpha release for seaborn v0.12, a major release introducing [an entirely new interface](http://seaborn.pydata.org/nextgen/) along with [numerous enhancements and fixes](https://github.com/mwaskom/seaborn/blob/v0.12.0a1/doc/releases/v0.12.0.txt) to existing functionality.

To install for testing, run


pip install https://github.com/mwaskom/seaborn/archive/refs/tags/v0.12.0a1.tar.gz


Changes from the first alpha release:

Objects interface

- Add `Norm` move, for divisive scaling after stat computation (2827)
- Complete `Line` mark and add corresponding `Path`, `Lines`, and `Paths` marks (2822)
- Fix inferred y orientation with computed x variable (2818)
- Fix multiple moves while pairing (2817)
- Improve missing data handling (2816)

Categorical plots

- Revert change to 1D "wide" data handling introduced in v0.12.0a0 (2829)
- Improve legend fore new features in categorical scatterplots (2828)
- Fix inner boxes with unpaired split violins (2814)

Distribution plots

- Fix some edgecases in `histplot`when specifying `binwidth` (2813)
- Fix `histplot`/`kdeplot` normalization when using `hue` and `weights` (2812)

0.12.0a0

This is the first alpha for seaborn v0.12.0, a major release that introduces an entirely new interface in the `seaborn.objects` namespace.

For more information about the new interface, see the development docs at http://seaborn.pydata.org/nextgen.

Please experiment with the alpha version and provide feedback on things that are confusing or don't work, but expect some rough edges and instability.
Links

@pyup-bot pyup-bot mentioned this pull request Jan 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant