数据可视化之维恩图 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

相关文章

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

pandas数据的合并concat()和merge()方式

《pandas数据的合并concat()和merge()方式》Pandas中concat沿轴合并数据框(行或列),merge基于键连接(内/外/左/右),concat用于纵向或横向拼接,merge用于... 目录concat() 轴向连接合并(1) join='outer',axis=0(2)join='o

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口