diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 55bd6c1..e176cbb 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -1,11 +1,13 @@
 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.
-- Added `from_contents` to provide an alternative, intuitive way of specifying
-  category membership of elements.
+- `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
@@ -13,8 +15,8 @@ What's new in version 0.3
   intuition that categories are named, logical groupings, as opposed to
   "subsets". To this end:
 
-  - `generate_data` now names its categories "cat1", "cat2" etc. rather than
-    "set1", "set2", etc.
+  - `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.
 
diff --git a/README.rst b/README.rst
index b7dd748..36a9047 100644
--- a/README.rst
+++ b/README.rst
@@ -17,8 +17,8 @@ subset sizes, where each subset is an intersection of named categories.  The
 index of the Series indicates which rows pertain to which categories, by having
 multiple boolean indices, like ``example`` in the following::
 
-    >>> from upsetplot import generate_data
-    >>> example = generate_data(aggregated=True)
+    >>> from upsetplot import generate_counts
+    >>> example = generate_counts()
     >>> example  # doctest: +NORMALIZE_WHITESPACE
     cat0   cat1   cat2
     False  False  False      56
diff --git a/doc/api.rst b/doc/api.rst
index 169b341..9c71b49 100644
--- a/doc/api.rst
+++ b/doc/api.rst
@@ -21,4 +21,6 @@ Dataset loading and generation
 
 .. autofunction:: from_memberships
 
-.. autofunction:: generate_data
+.. autofunction:: generate_counts
+
+.. autofunction:: generate_samples
diff --git a/examples/plot_generated.py b/examples/plot_generated.py
index d9171dc..2047a18 100644
--- a/examples/plot_generated.py
+++ b/examples/plot_generated.py
@@ -7,9 +7,9 @@ This example illustrates basic plotting functionality using generated data.
 """
 
 from matplotlib import pyplot as plt
-from upsetplot import generate_data, plot
+from upsetplot import generate_counts, plot
 
-example = generate_data(aggregated=True)
+example = generate_counts()
 print(example)
 
 plot(example)
diff --git a/examples/plot_vertical.py b/examples/plot_vertical.py
index 45ea673..bf06306 100644
--- a/examples/plot_vertical.py
+++ b/examples/plot_vertical.py
@@ -7,9 +7,9 @@ This illustrates the effect of orientation='vertical'.
 """
 
 from matplotlib import pyplot as plt
-from upsetplot import generate_data, plot
+from upsetplot import generate_counts, plot
 
-example = generate_data(aggregated=True)
+example = generate_counts()
 plot(example, orientation='vertical')
 plt.suptitle('A vertical plot')
 plt.show()
diff --git a/upsetplot/__init__.py b/upsetplot/__init__.py
index 4218a8d..21477ac 100644
--- a/upsetplot/__init__.py
+++ b/upsetplot/__init__.py
@@ -1,7 +1,10 @@
 from .plotting import UpSet, plot
-from .data import generate_data, from_memberships, from_contents
+from .data import (generate_counts, generate_data, generate_samples,
+                   from_memberships, from_contents)
 
 __version__ = '0.3-dev'
 
-__all__ = ['UpSet', 'generate_data', 'plot',
+__all__ = ['UpSet',
+           'generate_data', 'generate_counts', 'generate_samples',
+           'plot',
            'from_memberships', 'from_contents']
diff --git a/upsetplot/data.py b/upsetplot/data.py
index 640d645..b09a0d5 100644
--- a/upsetplot/data.py
+++ b/upsetplot/data.py
@@ -2,23 +2,87 @@ from __future__ import print_function, division, absolute_import
 from numbers import Number
 import functools
 import distutils
+import warnings
 
 import pandas as pd
 import numpy as np
 
 
-def generate_data(seed=0, n_samples=10000, n_sets=3, aggregated=False):
+def generate_samples(seed=0, n_samples=10000, n_categories=3):
+    """Generate artificial samples assigned to set intersections
+
+    Parameters
+    ----------
+    seed : int
+        A seed for randomisation
+    n_samples : int
+        Number of samples to generate
+    n_categories : int
+        Number of categories (named "cat0", "cat1", ...) to generate
+
+    Returns
+    -------
+    DataFrame
+        Field 'value' is a weight or score for each element.
+        Field 'index' is a unique id for each element.
+        Index includes a boolean indicator mask for each category.
+
+        Note: Further fields may be added in future versions.
+
+    See Also
+    --------
+    generate_counts : Generates the counts for each subset of categories
+        corresponding to these samples.
+    """
     rng = np.random.RandomState(seed)
     df = pd.DataFrame({'value': np.zeros(n_samples)})
-    for i in range(n_sets):
+    for i in range(n_categories):
         r = rng.rand(n_samples)
         df['cat%d' % i] = r > rng.rand()
         df['value'] += r
 
-    df.set_index(['cat%d' % i for i in range(n_sets)], inplace=True)
+    df.reset_index(inplace=True)
+    df.set_index(['cat%d' % i for i in range(n_categories)], inplace=True)
+    return df
+
+
+def generate_counts(seed=0, n_samples=10000, n_categories=3):
+    """Generate artificial counts corresponding to set intersections
+
+    Parameters
+    ----------
+    seed : int
+        A seed for randomisation
+    n_samples : int
+        Number of samples to generate statistics over
+    n_categories : int
+        Number of categories (named "cat0", "cat1", ...) to generate
+
+    Returns
+    -------
+    Series
+        Counts indexed by boolean indicator mask for each category.
+
+    See Also
+    --------
+    generate_samples : Generates a DataFrame of samples that these counts are
+        derived from.
+    """
+    df = generate_samples(seed=seed, n_samples=n_samples,
+                          n_categories=n_categories)
+    return df.value.groupby(level=list(range(n_categories))).count()
+
+
+def generate_data(seed=0, n_samples=10000, n_sets=3, aggregated=False):
+    warnings.warn('generate_data was replaced by generate_counts in version '
+                  '0.3 and will be removed in version 0.4.',
+                  DeprecationWarning)
     if aggregated:
-        return df.value.groupby(level=list(range(n_sets))).count()
-    return df.value
+        return generate_counts(seed=seed, n_samples=n_samples,
+                               n_categories=n_sets)
+    else:
+        return generate_samples(seed=seed, n_samples=n_samples,
+                                n_categories=n_sets)['value']
 
 
 def from_memberships(memberships, data=None):

Rename generate_data to generate_counts and default aggregate=TRUE
diff --git a/upsetplot/tests/test_data.py b/upsetplot/tests/test_data.py
index 57db0e5..752594f 100644
--- a/upsetplot/tests/test_data.py
+++ b/upsetplot/tests/test_data.py
@@ -5,7 +5,7 @@ import numpy as np
 from distutils.version import LooseVersion
 from pandas.util.testing import (assert_series_equal, assert_frame_equal,
                                  assert_index_equal)
-from upsetplot import from_memberships, from_contents
+from upsetplot import from_memberships, from_contents, generate_data
 
 
 @pytest.mark.parametrize('typ', [set, list, tuple, iter])
@@ -172,3 +172,8 @@ def test_from_contents_invalid(id_column):
         from_contents({'cat1': ['aa']},
                       data=pd.DataFrame([[1]]),
                       id_column=id_column)
+
+
+def test_generate_data_warning():
+    with pytest.warns(DeprecationWarning):
+        generate_data()
diff --git a/upsetplot/tests/test_upsetplot.py b/upsetplot/tests/test_upsetplot.py
index 1a9d4c3..a216e72 100644
--- a/upsetplot/tests/test_upsetplot.py
+++ b/upsetplot/tests/test_upsetplot.py
@@ -12,7 +12,7 @@ import matplotlib.pyplot as plt
 
 from upsetplot import plot
 from upsetplot import UpSet
-from upsetplot import generate_data
+from upsetplot import generate_counts, generate_samples
 from upsetplot.plotting import _process_data
 
 # TODO: warnings should raise errors
@@ -24,8 +24,8 @@ def is_ascending(seq):
 
 
 @pytest.mark.parametrize('x', [
-    generate_data(aggregated=True),
-    generate_data(aggregated=True).iloc[1:-2],
+    generate_counts(),
+    generate_counts().iloc[1:-2],
 ])
 @pytest.mark.parametrize('sort_by', ['cardinality', 'degree'])
 @pytest.mark.parametrize('sort_categories_by', [None, 'cardinality'])
@@ -73,8 +73,8 @@ def test_process_data_series(x, sort_by, sort_categories_by):
 
 
 @pytest.mark.parametrize('x', [
-    generate_data(),
-    generate_data(aggregated=True),
+    generate_samples()['value'],
+    generate_counts(),
 ])
 def test_subset_size_series(x):
     kw = {'sort_by': 'cardinality',
@@ -116,7 +116,7 @@ def test_subset_size_series(x):
 
 @pytest.mark.parametrize('sort_sets_by', [None, 'cardinality'])
 @pytest.mark.parametrize('x', [
-    generate_data(aggregated=True),
+    generate_counts(),
 ])
 def test_sort_sets_by_deprecation(x, sort_sets_by):
     with pytest.warns(DeprecationWarning, match='sort_sets_by'):
@@ -138,7 +138,7 @@ def test_sort_sets_by_deprecation(x, sort_sets_by):
 
 
 @pytest.mark.parametrize('x', [
-    generate_data(aggregated=False),
+    generate_samples()['value'],
 ])
 @pytest.mark.parametrize('sort_by', ['cardinality', 'degree'])
 @pytest.mark.parametrize('sort_categories_by', [None, 'cardinality'])
@@ -204,8 +204,8 @@ def test_process_data_frame(x, sort_by, sort_categories_by):
 
 
 @pytest.mark.parametrize('x', [
-    generate_data(),
-    generate_data(aggregated=True),
+    generate_samples()['value'],
+    generate_counts(),
 ])
 def test_subset_size_frame(x):
     kw = {'sort_by': 'cardinality',
@@ -260,15 +260,14 @@ def test_subset_size_frame(x):
 
 @pytest.mark.parametrize('sort_by', ['cardinality', 'degree'])
 @pytest.mark.parametrize('sort_categories_by', [None, 'cardinality'])
-def test_not_aggregated(sort_by, sort_categories_by):
-    # FIXME: this is not testing if aggregation used is count or sum
+def test_not_unique(sort_by, sort_categories_by):
     kw = {'sort_by': sort_by,
           'sort_categories_by': sort_categories_by,
           'subset_size': 'sum',
           'sum_over': None}
-    Xagg = generate_data(aggregated=True)
+    Xagg = generate_counts()
     df1, intersections1, totals1 = _process_data(Xagg, **kw)
-    Xunagg = generate_data()
+    Xunagg = generate_samples()['value']
     Xunagg.loc[:] = 1
     df2, intersections2, totals2 = _process_data(Xunagg, **kw)
     assert_series_equal(intersections1, intersections2,
@@ -286,7 +285,7 @@ def test_not_aggregated(sort_by, sort_categories_by):
                                 {'sort_categories_by': 'blah'},
                                 {'sort_categories_by': True}])
 def test_param_validation(kw):
-    X = generate_data(n_samples=100, aggregated=True)
+    X = generate_counts(n_samples=100)
     with pytest.raises(ValueError):
         UpSet(X, **kw)
 
@@ -296,7 +295,7 @@ def test_param_validation(kw):
                                 {'orientation': 'vertical'}])
 def test_plot_smoke_test(kw):
     fig = matplotlib.figure.Figure()
-    X = generate_data(n_samples=100, aggregated=True)
+    X = generate_counts(n_samples=100)
     plot(X, fig, **kw)
     fig.savefig(io.BytesIO(), format='png')
 
@@ -330,7 +329,7 @@ def test_dataframe_raises():
 
 
 def test_vertical():
-    X = generate_data(n_samples=100, aggregated=True)
+    X = generate_counts(n_samples=100)
 
     fig = matplotlib.figure.Figure()
     UpSet(X, orientation='horizontal').make_grid(fig)
@@ -349,7 +348,7 @@ def test_vertical():
 
 
 def test_element_size():
-    X = generate_data(n_samples=100, aggregated=True)
+    X = generate_counts(n_samples=100)
     figsizes = []
     for element_size in range(10, 50, 5):
         fig = matplotlib.figure.Figure()
@@ -389,7 +388,7 @@ def _count_descendants(el):
 @pytest.mark.parametrize('orientation', ['horizontal', 'vertical'])
 def test_show_counts(orientation):
     fig = matplotlib.figure.Figure()
-    X = generate_data(n_samples=100, aggregated=True)
+    X = generate_counts(n_samples=100)
     plot(X, fig)
     n_artists_no_sizes = _count_descendants(fig)
 
@@ -409,7 +408,7 @@ def test_show_counts(orientation):
 
 def test_add_catplot():
     pytest.importorskip('seaborn')
-    X = generate_data(n_samples=100, aggregated=True)
+    X = generate_counts(n_samples=100)
     upset = UpSet(X)
     # smoke test
     upset.add_catplot('violin')
@@ -423,7 +422,7 @@ def test_add_catplot():
     # check the above add_catplot did not break the state
     upset.plot(fig)
 
-    X = generate_data(n_samples=100)
+    X = generate_counts(n_samples=100)
     X.name = 'foo'
     X = X.to_frame()
     upset = UpSet(X, subset_size='count')

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest pytest-cov pytest-xdist pytest-mock pytest-asyncio pytest
apt-get update apt-get install -y gcc
3.6
doc/requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.13
attrs==22.2.0
Babel==2.11.0
certifi==2021.5.30
charset-normalizer==2.0.12
coverage==6.2
cycler==0.11.0
docutils==0.18.1
execnet==1.9.0
idna==3.10
imagesize==1.4.1
importlib-metadata==4.8.3
iniconfig==1.1.1
Jinja2==3.0.3
joblib==1.1.1
kiwisolver==1.3.1
MarkupSafe==2.0.1
matplotlib==3.3.4
numpy==1.19.5
numpydoc==1.1.0
packaging==21.3
pandas==1.1.5
Pillow==8.4.0
pluggy==1.0.0
py==1.11.0
Pygments==2.14.0
pyparsing==3.1.4
pytest==7.0.1
pytest-asyncio==0.16.0
pytest-cov==4.0.0
pytest-mock==3.6.1
pytest-xdist==3.0.2
python-dateutil==2.9.0.post0
pytz==2025.2
requests==2.27.1
scikit-learn==0.24.2
scipy==1.5.4
seaborn==0.11.2
six==1.17.0
snowballstemmer==2.2.0
Sphinx==5.3.0
sphinx-gallery==0.10.0
sphinx-issues==3.0.1
sphinxcontrib-applehelp==1.0.2
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp==2.0.0
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.5
threadpoolctl==3.1.0
tomli==1.2.3
typing_extensions==4.1.1
-e git+https://github.com/jnothman/UpSetPlot.git@b37bd9fb204fa374da8d7c451a25502eeba18aeb#egg=UpSetPlot
urllib3==1.26.20
zipp==3.6.0

name: UpSetPlot
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alabaster==0.7.13
      - attrs==22.2.0
      - babel==2.11.0
      - charset-normalizer==2.0.12
      - coverage==6.2
      - cycler==0.11.0
      - docutils==0.18.1
      - execnet==1.9.0
      - idna==3.10
      - imagesize==1.4.1
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - jinja2==3.0.3
      - joblib==1.1.1
      - kiwisolver==1.3.1
      - markupsafe==2.0.1
      - matplotlib==3.3.4
      - numpy==1.19.5
      - numpydoc==1.1.0
      - packaging==21.3
      - pandas==1.1.5
      - pillow==8.4.0
      - pluggy==1.0.0
      - py==1.11.0
      - pygments==2.14.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - pytest-asyncio==0.16.0
      - pytest-cov==4.0.0
      - pytest-mock==3.6.1
      - pytest-xdist==3.0.2
      - python-dateutil==2.9.0.post0
      - pytz==2025.2
      - requests==2.27.1
      - scikit-learn==0.24.2
      - scipy==1.5.4
      - seaborn==0.11.2
      - six==1.17.0
      - snowballstemmer==2.2.0
      - sphinx==5.3.0
      - sphinx-gallery==0.10.0
      - sphinx-issues==3.0.1
      - sphinxcontrib-applehelp==1.0.2
      - sphinxcontrib-devhelp==1.0.2
      - sphinxcontrib-htmlhelp==2.0.0
      - sphinxcontrib-jsmath==1.0.1
      - sphinxcontrib-qthelp==1.0.3
      - sphinxcontrib-serializinghtml==1.1.5
      - threadpoolctl==3.1.0
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - urllib3==1.26.20
      - zipp==3.6.0
prefix: /opt/conda/envs/UpSetPlot

upsetplot/tests/test_data.py::test_from_memberships_no_data[set] upsetplot/tests/test_data.py::test_from_memberships_no_data[list] upsetplot/tests/test_data.py::test_from_memberships_no_data[tuple] upsetplot/tests/test_data.py::test_from_memberships_no_data[iter] upsetplot/tests/test_data.py::test_from_memberships_with_data[data0-1] upsetplot/tests/test_data.py::test_from_memberships_with_data[data1-1] upsetplot/tests/test_data.py::test_from_memberships_with_data[data2-1] upsetplot/tests/test_data.py::test_from_memberships_with_data[data3-2] upsetplot/tests/test_data.py::test_from_memberships_with_data[data4-2] upsetplot/tests/test_data.py::test_from_contents_vs_memberships[id-set-None] upsetplot/tests/test_data.py::test_from_contents_vs_memberships[id-set-data1] upsetplot/tests/test_data.py::test_from_contents_vs_memberships[id-list-None] upsetplot/tests/test_data.py::test_from_contents_vs_memberships[id-list-data1] upsetplot/tests/test_data.py::test_from_contents_vs_memberships[id-tuple-None] upsetplot/tests/test_data.py::test_from_contents_vs_memberships[id-tuple-data1] upsetplot/tests/test_data.py::test_from_contents_vs_memberships[id-iter-None] upsetplot/tests/test_data.py::test_from_contents_vs_memberships[id-iter-data1] upsetplot/tests/test_data.py::test_from_contents_vs_memberships[blah-set-None] upsetplot/tests/test_data.py::test_from_contents_vs_memberships[blah-set-data1] upsetplot/tests/test_data.py::test_from_contents_vs_memberships[blah-list-None] upsetplot/tests/test_data.py::test_from_contents_vs_memberships[blah-list-data1] upsetplot/tests/test_data.py::test_from_contents_vs_memberships[blah-tuple-None] upsetplot/tests/test_data.py::test_from_contents_vs_memberships[blah-tuple-data1] upsetplot/tests/test_data.py::test_from_contents_vs_memberships[blah-iter-None] upsetplot/tests/test_data.py::test_from_contents_vs_memberships[blah-iter-data1] upsetplot/tests/test_data.py::test_from_contents upsetplot/tests/test_data.py::test_from_contents_invalid[id] upsetplot/tests/test_data.py::test_from_contents_invalid[blah] upsetplot/tests/test_data.py::test_generate_data_warning upsetplot/tests/test_upsetplot.py::test_process_data_series[None-cardinality-x0] upsetplot/tests/test_upsetplot.py::test_process_data_series[None-cardinality-x1] upsetplot/tests/test_upsetplot.py::test_process_data_series[None-degree-x0] upsetplot/tests/test_upsetplot.py::test_process_data_series[None-degree-x1] upsetplot/tests/test_upsetplot.py::test_process_data_series[cardinality-cardinality-x0] upsetplot/tests/test_upsetplot.py::test_process_data_series[cardinality-cardinality-x1] upsetplot/tests/test_upsetplot.py::test_process_data_series[cardinality-degree-x0] upsetplot/tests/test_upsetplot.py::test_process_data_series[cardinality-degree-x1] upsetplot/tests/test_upsetplot.py::test_subset_size_series[x0] upsetplot/tests/test_upsetplot.py::test_subset_size_series[x1] upsetplot/tests/test_upsetplot.py::test_sort_sets_by_deprecation[x0-None] upsetplot/tests/test_upsetplot.py::test_sort_sets_by_deprecation[x0-cardinality] upsetplot/tests/test_upsetplot.py::test_process_data_frame[None-cardinality-x0] upsetplot/tests/test_upsetplot.py::test_process_data_frame[None-degree-x0] upsetplot/tests/test_upsetplot.py::test_process_data_frame[cardinality-cardinality-x0] upsetplot/tests/test_upsetplot.py::test_process_data_frame[cardinality-degree-x0] upsetplot/tests/test_upsetplot.py::test_subset_size_frame[x0] upsetplot/tests/test_upsetplot.py::test_subset_size_frame[x1] upsetplot/tests/test_upsetplot.py::test_not_unique[None-cardinality] upsetplot/tests/test_upsetplot.py::test_not_unique[None-degree] upsetplot/tests/test_upsetplot.py::test_not_unique[cardinality-cardinality] upsetplot/tests/test_upsetplot.py::test_not_unique[cardinality-degree] upsetplot/tests/test_upsetplot.py::test_param_validation[kw0] upsetplot/tests/test_upsetplot.py::test_param_validation[kw1] upsetplot/tests/test_upsetplot.py::test_param_validation[kw2] upsetplot/tests/test_upsetplot.py::test_param_validation[kw3] upsetplot/tests/test_upsetplot.py::test_param_validation[kw4] upsetplot/tests/test_upsetplot.py::test_plot_smoke_test[kw0] upsetplot/tests/test_upsetplot.py::test_plot_smoke_test[kw1] upsetplot/tests/test_upsetplot.py::test_plot_smoke_test[kw2] upsetplot/tests/test_upsetplot.py::test_two_sets[set20-set10] upsetplot/tests/test_upsetplot.py::test_two_sets[set20-set11] upsetplot/tests/test_upsetplot.py::test_two_sets[set20-set12] upsetplot/tests/test_upsetplot.py::test_two_sets[set20-set13] upsetplot/tests/test_upsetplot.py::test_two_sets[set21-set10] upsetplot/tests/test_upsetplot.py::test_two_sets[set21-set11] upsetplot/tests/test_upsetplot.py::test_two_sets[set21-set12] upsetplot/tests/test_upsetplot.py::test_two_sets[set21-set13] upsetplot/tests/test_upsetplot.py::test_two_sets[set22-set10] upsetplot/tests/test_upsetplot.py::test_two_sets[set22-set11] upsetplot/tests/test_upsetplot.py::test_two_sets[set22-set12] upsetplot/tests/test_upsetplot.py::test_two_sets[set22-set13] upsetplot/tests/test_upsetplot.py::test_two_sets[set23-set10] upsetplot/tests/test_upsetplot.py::test_two_sets[set23-set11] upsetplot/tests/test_upsetplot.py::test_two_sets[set23-set12] upsetplot/tests/test_upsetplot.py::test_two_sets[set23-set13] upsetplot/tests/test_upsetplot.py::test_dataframe_raises upsetplot/tests/test_upsetplot.py::test_vertical upsetplot/tests/test_upsetplot.py::test_element_size upsetplot/tests/test_upsetplot.py::test_show_counts[horizontal] upsetplot/tests/test_upsetplot.py::test_show_counts[vertical] upsetplot/tests/test_upsetplot.py::test_add_catplot
README.rst upsetplot/data.py examples/plot_vertical.py examples/plot_generated.py CHANGELOG.rst upsetplot/__init__.py doc/api.rst
README.rst upsetplot/data.py examples/plot_vertical.py examples/plot_generated.py CHANGELOG.rst upsetplot/__init__.py doc/api.rst