在数据分析和可视化领域,UpSet图是一种强大的工具,它能够直观地展示多个集合之间的交集大小。这种图表特别适用于探索性数据分析,帮助我们发现数据集中潜在的关联和模式。本文将详细介绍如何使用Python生成UpSet图,并提供一个完整的示例。
01 所需库
首先,我们需要导入必要的Python库:
numpy
:用于生成随机数据。pandas
:用于数据处理和创建DataFrame。matplotlib.pyplot
:用于绘图。upsetplot
:用于生成UpSet图。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from upsetplot import plot # 注意:这里我们直接从upsetplot导入plot函数,而不是UpSet类
02 创建数据
接下来,我们创建一个空的DataFrame,用于存储数据。虽然最终我们只需要一个Series对象,但使用DataFrame可以更方便地构建索引和数据。
# 创建一个空的DataFrame的索引,由三个布尔值列(var0, var1, var2)构成
index = pd.MultiIndex.from_tuples([(False, False, False),
(False, False, True),
(False, True, False),
(False, True, True),
(True, False, False),
(True, False, True),
(True, True, False),
(True, True, True)],
names=['var0', 'var1', 'var2'])
# 生成8个1到999之间的随机整数作为数据
data = np.random.randint(1, 1000, size=8)
# 将数据和索引组合成一个DataFrame
df = pd.DataFrame({'value': data}, index=index)
此时,df是一个包含随机数据的DataFrame,其索引由三个布尔值列构成。我们可以打印出df来查看其结构。
print(df)
具体结构如下图所示:
然后,我们从DataFrame中提取出value列,得到一个Series对象。
series = df['value']
print(series)
具体的Series结构如下图所示:
03 生成UpSet图
现在,我们已经有了生成UpSet图所需的数据。接下来,我们使用upsetplot
库中的plot
函数来绘制图表。
# 绘制UpSet图,设置显示交集大小,并指定图表背景颜色
plot(series, show_counts=True, facecolor="darkblue")
# 添加图表标题
plt.suptitle('Generate UpSet Based on Python')
# 保存图表为PDF文件
plt.savefig("upset_plot_case.pdf")
# 显示图表(注意:在某些环境中,如Jupyter Notebook,这一步可能是可选的)
plt.show()
图表显示:
04 图表解释
生成的UpSet图将展示三个变量(var0, var1, var2)之间的交集大小。图表的上方是一组堆叠的条形图,每个条形代表一个或多个变量的组合,条形的高度表示该组合中的元素数量。图表的下方是一个矩阵,展示了每对变量之间的交集大小。
通过仔细观察UpSet图,我们可以发现哪些变量组合最常见,以及它们之间的关联程度。这对于理解数据集的结构和潜在模式非常有帮助。
★参考文献
Python 数据可视化,科技图表绘制。
欢迎大家关注公众号,持续更新数据可视化。