数据可视化之维恩图 Venn diagram

2024-02-10 20:04

本文主要是介绍数据可视化之维恩图 Venn diagram,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、前言
  • 二、主要内容
  • 三、总结

🍉 CSDN 叶庭云https://yetingyun.blog.csdn.net/


一、前言

维恩图(Venn diagram),也叫文氏图或韦恩图,是一种关系型图表,用于显示元素集合之间的重叠区域。它帮助我们查看集合元素的分布关系,特别适用于图形化描述多个集合之间的交集、并集和差异。维恩图被广泛用于数学、统计学、逻辑、计算机科学和商业分析。它能够表示两组或更多组数据之间的逻辑关系。维恩图涉及重叠的圈子,这些圈子展示了组织结构、共同性和差异。

在这里插入图片描述


二、主要内容

让我们更详细地了解维恩图:

  1. 维恩图的基本概念

    • 维恩图由圆形或椭圆形区域组成,这些区域表示不同的集合。因此,维恩图的主要元素包括圆圈、交集、逻辑表达
    • 每个圆圈代表一个集合,而重叠部分则表示这些集合之间的共同元素。
  2. 维恩图的用途

    • 比较策略:我们可以使用维恩图来比较不同策略、决策或流程的潜在结果。每个圆圈代表一个观点或事物,重叠部分表示相同之处,而各自不重叠的部分则表示各自不同的特征。
    • 突出显示组合和重叠:当我们需要通过消除工作流冗余来削减成本时,可以使用维恩图的重叠部分来定位任务。通过将方案细化并拆分为多个任务,我们可以解决问题或满足需求。
    • 数据分析:企业决策者可以利用维恩图进行数据分析,以加强数据管理并做出决策判断。
    • 广告品牌视觉化表达:维恩图的交叉环形形式常用于品牌的视觉效果表达,比如标志演变、广告活动、产品图表等。

通过维恩图,我们可以更好地理解集合之间的相同和不同之处,将抽象的事物图形化,降低复杂性,做出最优选择。

下面展示一个绘制维恩图的例子,参考了一篇 Cell 论文里的维恩图。论文:Shen, B., Yi, X., Sun, Y., Bi, X., Du, J., Zhang, C., … & Guo, T. (2020). Proteomic and metabolomic characterization of COVID-19 patient sera. Cell, 182(1), 59-72.

在这里插入图片描述

借助 EVenn 可以轻松绘制和分析维恩图。

  • 轻松在线创建可重复、可编辑和可统计的维恩图和维恩-替代图。
  • 支持 5 种类型的集合关系可视化。
  • 开发一个统一的矩阵,作为所有 7 个工具的输入。
  • 为任意数量的集合列出每个交集的元素。
  • 计算集合一致性的统计意义。
  • 生成出版物质量的矢量图像供下载。
  • 根据个人需求定制大量样式参数。

效果如下图所示:

在这里插入图片描述


三、总结

借助 EVenn 可以轻松绘制和分析维恩图。利用 Python 编程绘制维恩图是另一种方法,可以借助 matplotlib-vennpyvennUpSetPlot 实现。然而,这需要花费更多时间来学习 Python、组织数据和调整图表参数,以确保绘制的维恩图既美观又具有高分辨率,适合用于出版物。个人认为,维恩图的绘制相对简单、直观,因此通过编程绘制可能并非必要。

此外,您还可以使用 Visio 或 PPT 手动绘制圆形或椭圆形,然后手动设置它们的重叠部分和图例说明,实现更灵活地绘制维恩图并让它美观、直观。

维恩图作为一种强大的可视化工具,也有一些局限性。让我们来看看其中一些:

  1. 有限的集合数量:维恩图最适合用于描述两个或三个集合之间的关系。当涉及到更多集合时,维恩图会变得复杂且难以理解。

  2. 面积不准确维恩图中的圆圈面积并不总是准确地表示集合的大小。这是因为我们通常使用圆圈的面积来表示集合元素的数量,但实际上,圆圈的面积可能不是按比例缩放的。

  3. 不适合连续数据:维恩图主要用于显示离散的集合元素。如果你的数据是连续的,例如时间序列数据或温度变化,维恩图可能不是最佳选择。

  4. 无法显示交集的具体元素:维恩图只能显示集合之间的交集,但无法具体列出交集中的哪些元素。如果你需要详细了解交集的内容,维恩图就无法提供这种信息。

  5. 不适用于大规模数据:当数据集非常大时,维恩图会变得混乱且难以解读。在这种情况下,其他可视化工具(如树状图或热力图)可能更适合。

  6. 不适合比较比例:维恩图不适合用于比较集合之间的比例。如果你关心的是集合元素的百分比或比例,其他图表(如饼图)更适合。

总之,维恩图在展示集合之间的关系方面非常有用,但在使用时需要考虑其局限性,并根据具体情况选择合适的可视化工具。


📚️ 参考链接:

  • Chen, T., Zhang, H., Liu, Y., Liu, Y. X., & Huang, L. (2021). EVenn: Easy to create repeatable and editable Venn diagrams and Venn networks online. Journal of genetics and genomics= Yi chuan xue bao, 48(9), 863-866.
  • matplotlib-venn - Venn diagram plotting routines for Python/Matplotlib
  • pyvenn - 2 ~ 6 sets venn diagram for python
  • UpSetPlot - Draw UpSet plots with Matplotlib
  • Python 数据可视化之韦恩图

这篇关于数据可视化之维恩图 Venn diagram的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/697948

相关文章

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

Java实现Elasticsearch查询当前索引全部数据的完整代码

《Java实现Elasticsearch查询当前索引全部数据的完整代码》:本文主要介绍如何在Java中实现查询Elasticsearch索引中指定条件下的全部数据,通过设置滚动查询参数(scrol... 目录需求背景通常情况Java 实现查询 Elasticsearch 全部数据写在最后需求背景通常情况下

Java中注解与元数据示例详解

《Java中注解与元数据示例详解》Java注解和元数据是编程中重要的概念,用于描述程序元素的属性和用途,:本文主要介绍Java中注解与元数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参... 目录一、引言二、元数据的概念2.1 定义2.2 作用三、Java 注解的基础3.1 注解的定义3.2 内

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据