用熊猫和matplotlib绘制lex等人的扰乱图
UpSetPlot的Python项目详细描述
这是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
品牌:
此图显示了数据中每个类别组合的基数。 最左边的列统计任何类别中不存在的项。接下来的三个 列仅分别在cat1、cat2和cat3中计算项,其中 以下列显示了每个组合中项的基数 正好是两个命名集。最右边的列统计所有三个集合中的项。
加载数据集
上面的数据集是随机生成的,您可以准备自己的数据集 用于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 |