可視化相交集|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是一個更乾淨的版本,一旦輸入數據集固定,就可以輕鬆實現


分享到:


相關文章: