Software Open Access
Michael Waskom; Olga Botvinnik; Drew O'Kane; Paul Hobson; Joel Ostblom; Saulius Lukauskas; David C Gemperline; Tom Augspurger; Yaroslav Halchenko; John B. Cole; Jordi Warmenhoven; Julian de Ruiter; Cameron Pye; Stephan Hoyer; Jake Vanderplas; Santi Villalba; Gero Kunter; Eric Quintero; Pete Bachant; Marcel Martin; Kyle Meyer; Alistair Miles; Yoav Ram; Thomas Brunner; Tal Yarkoni; Mike Lee Williams; Constantine Evans; Clark Fitzgerald; Brian; Adel Qalieh
Note: a version of these release notes with working links appears in the online documentation.
This is a major release with several substantial and long-desired new features. There are also updates/modifications to the themes and color palettes that give better consistency with matplotlib 2.0 and some notable API changes.New relational plots
Three completely new plotting functions have been added: catplot, scatterplot, and lineplot. The first is a figure-level interface to the latter two that combines them with a FacetGrid. The functions bring the high-level, dataset-oriented API of the seaborn categorical plotting functions to more general plots (scatter plots and line plots).
These functions can visualize a relationship between two numeric variables while mapping up to three additional variables by modifying
style semantics. The common high-level API is implemented differently in the two functions. For example, the size semantic in scatterplot scales the area of scatter plot points, but in lineplot it scales width of the line plot lines. The API is dataset-oriented, meaning that in both cases you pass the variable in your dataset rather than directly specifying the matplotlib parameters to use for point area or line width.
Another way the relational functions differ from existing seaborn functionality is that they have better support for using numeric variables for
size semantics. This functionality may be propagated to other functions that can add a
hue semantic in future versions; it has not been in this release.
The lineplot function also has support for statistical estimation and is replacing the older
tsplot function, which still exists but is marked for removal in a future release. lineplot is better aligned with the API of the rest of the library and more flexible in showing relationships across additional variables by modifying the size and style semantics independently. It also has substantially improved support for date and time data, a major pain factor in
tsplot. The cost is that some of the more esoteric options in
tsplot for representing uncertainty (e.g. a colormapped KDE of the bootstrap distribution) have not been implemented in the new function.
There is quite a bit of new documentation that explains these new functions in more detail, including detailed examples of the various options in the API reference and a more verbose tutorial.
These functions should be considered in a "stable beta" state. They have been thoroughly tested, but some unknown corner cases may remain to be found. The main features are in place, but not all planned functionality has been implemented. There are planned improvements to some elements, particularly the default legend, that are a little rough around the edges in this release. Finally, some of the default behavior (e.g. the default range of point/line sizes) may change somewhat in future releases.Updates to themes and palettes
Several changes have been made to the seaborn style themes, context scaling, and color palettes. In general the aim of these changes was to make the seaborn styles more consistent with the style updates in matplotlib 2.0 and to leverage some of the new style parameters for better implementation of some aspects of the seaborn styles. Here is a list of the changes:
"ch:-.1,.2,l=.7"). Note that keyword arguments can be spelled out or referenced using only their first letter. Reversing the palette is accomplished by appending
"_r", as with other matplotlib colormaps. This specification will be accepted by any seaborn function with a
A few functions have been renamed or have had changes to their default parameters.
factorplotfunction has been renamed to catplot. The new name ditches the original R-inflected terminology to use a name that is more consistent with terminology in pandas and in seaborn itself. This change should hopefully make catplot easier to discover, and it should make more clear what its role is.
factorplotstill exists and will pass its arguments through to catplot with a warning. It may be removed eventually, but the transition will be as gradual as possible.
factorplotname was changed was to ease another alteration which is that the default
kindin catplot is now
"strip"(corresponding to stripplot). This plots a categorical scatter plot which is usually a much better place to start and is more consistent with the default in relplot. The old default style in
"point", corresponding to pointplot) remains available if you want to show a statistical estimation.
lvplotfunction has been renamed to boxenplot. The "letter-value" terminology that was used to name the original kind of plot is obscure, and the abbreviation to
lvdid not help anything. The new name should make the plot more discoverable by describing its format (it plots multiple boxes, also known as "boxen"). As with
lvplotfunction still exists to provide a relatively smooth transition.
heightin multi-plot grid objects (FacetGrid, PairGrid, and JointGrid) along with functions that use them (
factorplot, lmplot, pairplot, and jointplot) to avoid conflicts with the
sizeparameter that is used in
lineplot(necessary to make relplot work) and also makes the meaning of the parameter a bit more clear.
"hue"dimension is used.
interactplot, have undergone final removal from the code base.
There has been some effort put into improving the documentation. The biggest change is that the introduction to the library has been completely rewritten to provide much more information and, critically, examples. In addition to the high-level motivation, the introduction also covers some important topics that are often sources of confusion, like the distinction between figure-level and axes-level functions, how datasets should be formatted for use in seaborn, and how to customize the appearance of the plots.
Other improvements have been made throughout, most notably a thorough re-write of the categorical tutorial categorical_tutorial.Other small enhancements and bug fixes
LineCollectioninstead of many
Line2Dobjects, providing a big speedup for large arrays.
"hue"currently draws three separate scatterplots instead of using the hue semantic of the scatterplot function).
labelkwargs, adding more flexibility and avoiding a warning when using with multi-plot grids.
subplot_kwsparameter to PairGrid for more flexibility.
pipis aware of. This means that
pip install seabornwill now work in an empty environment. Additionally, the dependencies are specified with strict minimal versions.