首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >UpSetPlot-让你使用Python轻松绘制upset图~~

UpSetPlot-让你使用Python轻松绘制upset图~~

作者头像
DataCharm
发布2023-12-19 18:43:19
发布2023-12-19 18:43:19
1.2K0
举报
  • 前言
    • 一、UpSetPlot-让Python轻松绘制upset图
    • 二、可视化学习圈子是干什么的?
    • 三、系统学习可视化
    • 四、猜你喜欢

前言

今天是我的可视化课程上线的第249天,目前学员425人,每篇原创公众号都会记录这个人数,用来督促和激励我的原创内容。目前课程的主要方向是 科研、统计、地理相关的学术性图形绘制方法,后续也会增加商务插图、机器学等、数据分析等方面的课程。课程免费新增,这点绝对良心!

今天是我的可视化学习社群上线的第28天,目前学员128人,可视化学习社区以我的书籍《科研论文配图绘制指南-基于Python》为基础进行拓展,提供课堂式教学视频,还有更多拓展内容,可视化技巧远超书籍本身,书籍修正和新增都会分享到圈子里面~~

参与课程或者圈子的你将获取到:学员答疑、可视化资源分享、可视化技巧补充、可视化业务代做(学员和甲方对接)、副业交流、提升认知等等。

UpSetPlot-让Python轻松绘制upset图

很多我们课程的学员或者书籍打卡圈子里的同学,都在问我有没有Upset图(UpSet Plot)的绘制方法?。确实,无论是书籍还是对应的可视化课程,Upset图都被我忘记了···,感觉补上。

首先,我们需要知道什么是Upset图?UPSet图形是一种可视化工具,用于展示多个集合之间的共享和差异。它可以帮助我们理解集合之间的交集、并集和差集关系。

UPSet图形通常由两部分组成:矩阵和线性图。

  1. 「矩阵」:矩阵部分是一个二维表格,其中每一行代表一个集合,每一列代表一个元素或特征。表格中的每个单元格表示该元素是否属于对应集合。常用的表示方法是使用1和0来表示属于和不属于。
  2. 「线性图」:线性图部分展示了各个集合之间的共享和差异情况。每个集合在图中用一个条形表示,条形的长度表示该集合中元素的数量。条形之间通过连线表示集合之间的共享元素,而没有连线的部分表示集合之间的差异。

理解和解读UPSet图需要注意以下几个方面:

  1. 数据集合的数量和交集关系:UPSet图的主要目的是展示多个数据集合之间的共同元素和交集关系。首先,观察UPSet图中的集合数量和它们之间的交集情况。可以通过X轴上的面积大小来判断集合的大小,以及通过连接线的数量和位置来了解它们之间的交集关系。
  2. 交集元素的数量:UPSet图中的每个子集区域代表一个数据集合,而连接线表示这些数据集合之间的交集元素。观察连接线的数量和位置可以了解交集的情况。例如,如果有多个连接线汇集在一起,表示这些数据集合具有较大的交集。
  3. 元素数量的比例:除了交集元素的数量,还可以通过区域的面积来了解数据集合的元素数量。UPSet图中,区域的面积越大,表示对应的数据集合包含的元素越多。
  4. 集合的排序和顺序:UPSet图中的集合可以按照特定的顺序排列,你可以根据需要调整集合的顺序,以更好地展示交集关系。观察集合的排序和顺序,可以帮助你更好地理解数据集合之间的关系。
  5. 图例和标签:UPSet图通常包括图例和标签,帮助解读图形。图例展示了每个数据集合的标识符及其对应的颜色,而标签显示了各个数据集合的具体名称。参考图例和标签,可以更准确地理解UPSet图中的各个部分。
  6. 附加信息:除了上述基本要素,UPSet图还可以包含其他附加信息,例如悬停提示和点击事件等。通过与图形的交互,可以进一步了解每个数据集合的详细信息。

upset样图

UPSet图形可以提供以下信息:

  • 共享元素:通过连线可以清晰地看到哪些元素同时存在于多个集合中。
  • 集合大小:线性图中的条形长度反映了每个集合中元素的数量,从而可以对比集合的大小。
  • 集合之间的差异:通过线性图中没有连线的部分可以看出哪些元素只存在于单个集合中,从而展示集合之间的差异。

UPSet图形在生物信息学、数据分析和数据挖掘等领域得到广泛应用。它可以帮助我们发现和分析多个数据集之间的交集和差异,从而揭示数据中的模式和关联关系。

那么,我们该如何绘制UPSet图形呢?

在Python中,可以使用UpSetPlot库来创建UPSet图形。该库提供了灵活的函数和方法,可以根据需求自定义UPSet图形的样式和布局。

  • UpSetPlot库安装
代码语言:javascript
复制
pip install upsetplot
  • UpSetPlot库样例

UpSetPlot库官网提供了多个绘制案例,小编这里就简单的给大家列举一下:

Plot the distribution of missing values

代码语言:javascript
复制
from matplotlib import pyplot as plt
from upsetplot import generate_counts, plot

example = generate_counts()

plot(example, show_counts=True)
plt.suptitle('Nothing hidden')
plt.show()

Hiding subsets based on size or degree

代码语言:javascript
复制
from matplotlib import pyplot as plt
from upsetplot import generate_counts, plot

example = generate_counts()

plot(example, facecolor="darkblue")
plt.suptitle('facecolor="darkblue"')
plt.show()

Changing Plot Colors

代码语言:javascript
复制
with plt.style.context('dark_background'):
    plot(example, show_counts=True, facecolor="red", other_dots_color=.4,
         shading_color=.2)
    plt.suptitle('dark_background, red face, stronger other colors')
    plt.show()
代码语言:javascript
复制
upset = UpSet(example, facecolor="gray")
upset.style_subsets(present="cat0", label="Contains cat0", facecolor="blue")
upset.style_subsets(present="cat1", label="Contains cat1", hatch="xx")
upset.style_subsets(present="cat2", label="Contains cat2", edgecolor="red")

# reduce legend size:
params = {'legend.fontsize': 8}
with plt.rc_context(params):
    upset.plot()
plt.suptitle("Styles for every category!")
plt.show()

Highlighting selected subsets

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataCharm 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • UpSetPlot-让Python轻松绘制upset图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档