用熊猫和matplotlib绘制lex等人的扰乱图

UpSetPlot的Python项目详细描述


Latest version on PyPilicencePython versions supported

Issue trackerTravis CI build statusDocumentation StatusTest coverage

这是lex等人在python中实现的另一个upset plots。[Lex2014]。 翻转图用于可视化集合重叠;类似于文氏图,但是 更具可读性。文档位于https://upsetplot.readthedocs.io

这个upsetplot库试图提供一个由 可扩展的,面向对象的设计。

基本的输入格式是pandas.series包含与 子集大小,其中每个子集是命名类别的交集。这个 序列的索引指示哪些行属于哪些类别,方法是 多个布尔索引,如下面的example

>>> from upsetplot import generate_counts
>>> example = generate_counts()
>>> example  # doctest: +NORMALIZE_WHITESPACE
cat0   cat1   cat2
False  False  False      56
              True      283
       True   False    1279
              True     5882
True   False  False      24
              True       90
       True   False     429
              True     1957
Name: value, dtype: int64

然后:

>>> from upsetplot import plot
>>> plot(example)  # doctest: +SKIP
>>> from matplotlib import pyplot
>>> pyplot.show()  # doctest: +SKIP

品牌:

http://upsetplot.readthedocs.io/en/latest/_images/sphx_glr_plot_generated_001.png

此图显示了数据中每个类别组合的基数。 最左边的列统计任何类别中不存在的项。接下来的三个 列仅分别在cat1cat2cat3中计算项,其中 以下列显示了每个组合中项的基数 正好是两个命名集。最右边的列统计所有三个集合中的项。

旋转

我们称上面的打印样式为“水平”,因为类别相交 从左到右呈现。Vertical plots 也支持!

http://upsetplot.readthedocs.io/en/latest/_images/sphx_glr_plot_vertical_001.png

分布

提供一个数据帧而不是一个序列作为输入使我们能够表达 plot the distribution of variables 在每个子集中。

http://upsetplot.readthedocs.io/en/latest/_images/sphx_glr_plot_boston_001.png

加载数据集

上面的数据集是随机生成的,您可以准备自己的数据集 用于upsetplot的输入。一个有用的工具是来自会员的,它允许 我们将通过指示每个数据点的类别来重构上面的示例 会员:

>>> from upsetplot import from_memberships
>>> example = from_memberships(
...     [[],
...      ['cat2'],
...      ['cat1'],
...      ['cat1', 'cat2'],
...      ['cat0'],
...      ['cat0', 'cat2'],
...      ['cat0', 'cat1'],
...      ['cat0', 'cat1', 'cat2'],
...      ],
...      data=[56, 283, 1279, 5882, 24, 90, 429, 1957]
... )
>>> example  # doctest: +NORMALIZE_WHITESPACE
cat0   cat1   cat2
False  False  False      56
              True      283
       True   False    1279
              True     5882
True   False  False      24
              True       90
       True   False     429
              True     1957
dtype: int64

另请参见from_contents,这是描述分类数据的另一种方式。

安装

要安装库,可以使用pip

$ pip install upsetplot

安装需要:

  • 熊猫
  • matplotlib>;=2.0
  • seaborn使用心烦意乱。添加catplot

然后应该可以:

>>> import upsetplot

在Python中。

为什么要用另一种方法来代替烦躁?

可能是因为一些小的原因。似乎py-upset没有得到维护。它的 输入格式没有记录,效率低下,而且,imo,不适当。它没有 便于显示每个子集的分布图,如Lex等人的工作 引入混乱的情节。也不包括水平条形图 上面有插图。它不支持python 2。我决定更容易 构造一个比修复它更干净的版本。

参考文献

[Lex2014]Alexander Lex, Nils Gehlenborg, Hendrik Strobelt, Romain Vuillemot, Hanspeter Pfister, UpSet: Visualization of Intersecting Sets, IEEE Transactions on Visualization and Computer Graphics (InfoVis ‘14), vol. 20, no. 12, pp. 1983–1992, 2014. doi: doi.org/10.1109/TVCG.2014.2346248

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javascript生成两点之间的固定纬度和经度   java为什么不删除并重命名文件?   求数组的和   java在漂亮面孔中使用正则表达式   SOAP(java)中的Hello World。如何修复它?   java I获取应用程序生成错误,配置为“”的资源“attr/arc_position”的值重复   云基础环境中的Java SFTP客户端应用   谷歌应用程序引擎Java查询日期不正常?   java使用cancel按钮对JOptionPane InputDialog循环进行转义   java数字格式总是返回异常   xquery Java Saxon API以“追加”模式写入文件   java Azure函数在第二个插槽中没有响应   java在构建Play应用程序后向其添加动态依赖项   json如何使用Jackson mapper for java。木卫一。可序列化类型字段?