可视化相交集|Python中的Upset Chart

数据科学社区面临一个共同的问题,即理解多个集合之间的关系是一项基本的数据分析任务。

我找到了两个不同的软件包来创建upset chart,它们是pyUpset和upsetplot。

upsetplot:

“这是Lex等人的UpSet图的另一个Python实现。[ Lex2014 ]。它试图提供一个简单的界面,由可扩展的,面向对象的设计支持“ - 引自PyPI中的upsetplot的项目描述

基本输入格式是pandas.Series,包含与设置的交集大小相对应的计数的序列。

如何安装?

pip install upsetplot

Python示例:

from upsetplot import generate_data
example = generate_data(aggregated=True)
example

Output:

可视化相交集|Python中的Upset Chart

然后输入以下Python代码:

from upsetplot import plot
plot(example)

生成:

可视化相交集|Python中的Upset Chart

垂直方向:可以使用以Python下代码旋转图形:

 from matplotlib import pyplot as plt
from upsetplot import generate_data, plot

example = generate_data(aggregated=True)
plot(example, orientation=’vertical’)
plt.show()

输出:

可视化相交集|Python中的Upset Chart

pyUpset

Lex,Gehlenborg等人的UpSet可视化方法套件的纯python实现 - 引自Github中pyUpset的项目描述

如何安装?

pyUpSet在PyPI上,因此可以通过pip以下方式安装:

pip install pyupset

Python示例

import pyupset as pyu
from pickle import load
with open(‘./test_data_dict.pckl’, ‘rb’) as f:
data_dict = load(f)
pyu.plot(data_dict)

输出:

可视化相交集|Python中的Upset Chart

交叉点突出显示:

pyUpSet支持“queries”,即交叉点的突出显示。要突出显示的交叉点通过元组指定。例如,以下调用产生图形,其中突出显示所有数据,其对应于分类为“adventure”和“action”,或“romance”和“war”的电影。

Python码:

pyu.plot(data_dict, unique_keys = [‘title’], 
additional_plots=[{‘kind’:’scatter’, ‘data_quantities’:{‘x’:’views’, ‘y’:’rating_std’}}, {‘kind’:’hist’, ‘data_quantities’:{‘x’:’views’}}],
query = [(‘adventure’, ‘action’), (‘romance’, ‘war’)])

输出:

可视化相交集|Python中的Upset Chart

pyUpset vs upsetplot:

  1. 与upsetplot相比,pyUpset更强大。pyUpset让用户使用查询的强大功能,即突出显示交叉点
  2. py-upset不再维护了
  3. py-upset的输入格式没有记录,而upsetplot的输入格式已有详细记录
  4. py-upset不支持python 2和更新版本的matplotlib
  5. upsetplot是一个更干净的版本,一旦输入数据集固定,就可以轻松实现


分享到:


相關文章: