# Changelog¶

## What’s new in version 0.9¶

- Fixes a bug where
`show_percentages`

used the incorrect denominator if filtering (e.g.`min_subset_size`

) was applied. This bug was a regression introduced in version 0.7. (#248) - Align ylabels of subplots added using
`add_catplot`

. (#266) - Add a
`style_categories`

method to customize category plot styles, including shading of rows in the intersection matrix, and bars in the totals plot. (#261 with thanks to Marcel Albus). - Ability to disable totals plot with
`totals_plot_elements=0`

. (#246) - Ability to set totals y axis label (#243)
- Added
`max_subset_rank`

to get only n most populous subsets. (#253) - Added support for
`min_subset_size`

and`max_subset_size`

specified as percentage. (#264)

## What’s new in version 0.8¶

- Allowed
`show_percentages`

to be provided with a custom formatting string, for example to show more decimal places. (#194) - Added
`include_empty_subsets`

to`UpSet`

and`query`

to allow the display of all possible subsets. (#185) `sort_by`

and`sort_categories_by`

now accept ‘-’ prefix to their values to sort in reverse. ‘input’ and ‘-input’ are also supported. (#180)- Added
`subsets`

attribute to QueryResult. (#198) - Fixed a bug where more than 64 categories could result in an error. (#193)

Patch release 0.8.2 handles deprecations in dependencies.

## What’s new in version 0.7¶

- Added
`query`

function to support analysing set-based data. - Fixed support for matplotlib >3.5.2 (#191. Thanks @GuyTeichman)

## What’s new in version 0.6¶

- Added
`add_stacked_bars`

, similar to`add_catplot`

but to add stacked bar charts to show discrete variable distributions within each subset. (#137) - Improved ability to control colors, and added a new example of same.
Parameters
`other_dots_color`

and`shading_color`

were added.`facecolor`

will now default to white if`matplotlib.rcParams['axes.facecolor']`

is dark. (#138) - Added
`style_subsets`

to colour intersection size bars and matrix dots in the plot according to a specified query. (#152) - Added
`from_indicators`

to allow yet another data input format. This allows category membership to be easily derived from a DataFrame, such as when plotting missing values in the columns of a DataFrame. (#143)

## What’s new in version 0.5¶

- Support using input intersection order with
`sort_by=None`

(#133 with thanks to Brandon B). - Add parameters for filtering by subset size (with thanks to Sichong Peng) and degree. (#134)
- Fixed an issue where tick labels were not given enough space and overlapped category totals. (#132)
- Fixed an issue where our implementation of
`sort_by='degree'`

apparently gave incorrect results for some inputs and versions of Pandas. (#134)

## What’s new in version 0.4.3¶

- Fixed issue with the order of catplots being reversed for vertical plots (#122 with thanks to Enrique Fernandez-Blanco)
- Fixed issue with the x limits of vertical plots (#121).

## What’s new in version 0.4.2¶

- Fixed large x-axis plot margins with high number of unique intersections (#106 with thanks to Yidi Huang)

## What’s new in version 0.4¶

- Added option to display both the absolute frequency and the percentage of the total for each intersection and category. (#89 with thanks to Carlos Melus and Aaron Rosenfeld)
- Improved efficiency where there are many categories, but valid combinations
are sparse, if
`sort_by='degree'`

. (#82) - Permit truthy (not necessarily bool) values in index. (#74 with thanks to @ZaxR)
`intersection_plot_elements`

can now be set to 0 to hide the intersection size plot when`add_catplot`

is used. (#80)

## What’s new in version 0.3¶

- Added
`from_contents`

to provide an alternative, intuitive way of specifying category membership of elements. - To improve code legibility and intuitiveness,
`sum_over=False`

was deprecated and a`subset_size`

parameter was added. It will have better default handling of DataFrames after a short deprecation period. `generate_data`

has been replaced with`generate_counts`

and`generate_samples`

.- Fixed the display of the “intersection size” label on plots, which had been missing.
- Trying to improve nomenclature, upsetplot now avoids “set” to refer to the
top-level sets, which are now to be known as “categories”. This matches the
intuition that categories are named, logical groupings, as opposed to
“subsets”. To this end:
`generate_counts`

(formerly`generate_data`

) now names its categories “cat1”, “cat2” etc. rather than “set1”, “set2”, etc.- the
`sort_sets_by`

parameter has been renamed to`sort_categories_by`

and will be removed in version 0.4.

## What’s new in version 0.2.1¶

- Return a Series (not a DataFrame) from
`from_memberships`

if data is 1-dimensional.

## What’s new in version 0.2¶

- Added
`from_memberships`

to allow a more convenient data input format. `plot`

and`UpSet`

now accept a`pandas.DataFrame`

as input, if the`sum_over`

parameter is also given.- Added an
`add_catplot`

method to`UpSet`

which adds Seaborn plots of set intersection data to show more than just set size or total. - Shading of subset matrix is continued through to totals.
- Added a
`show_counts`

option to show counts at the ends of bar plots. (#5) - Defined
`_repr_html_`

so that an`UpSet`

object will render in Jupyter notebooks. (#36) - Fix a bug where an error was raised if an input set was empty.