ggplot2进行韦恩图分析

网上绘制venn图的案例有太多了,从传统的venn图到venn点图;说白了就是找数据之间的相同与不同,下面通过一个小例子来说明

library(ggvenn)
a <- list(`Set1` = c(1, 3, 5, 7, 9),
          `Set2` = c(1, 5, 9, 13),
          `Set3` = c(1, 2, 8, 9),
          `Set4` = c(6, 7, 10, 12))
ggvenn(a, c("Set1", "Set2")) 
ggplot2进行韦恩图分析_第1张图片

可以看到ggvenn软件包很轻松的为我们进行了数据统计及可视化,但是如果需要输出数据之间共有与特有的清单该如何,请继续往下看

首先我们先对图形进行美化

ggvenn(a,c("Set 1","Set 2"),show_percentage = T,
       stroke_color = "white",
       fill_color = c("#E41A1C","#1E90FF","#FF8C00",
                      "#4DAF4A","#984EA3"),
       set_name_color =c("#E41A1C","#1E90FF"))
ggplot2进行韦恩图分析_第2张图片
image.png
  • show_percentage 展示百分比
  • stroke_color = "white" 设置线圈颜色
  • fill_color 设置填充颜色
  • set_name_color 设置集合名称颜色

经过上述操作可以看到set1与set2之间共有的数据有3个,那如何知道这三个数据所对应的内容,可以使用dplyr包连接数据框的方式进行输出,参考:
https://mp.weixin.qq.com/s/elSBJJUAhf1DNKPPKkSbSg

inner_join函数合并两个数据集的变量,保留共有的行

set1 <- a$Set1 %>% as.data.frame() %>% mutate(y1="A")
set2 <- a$Set2 %>% as.data.frame() %>% mutate(y2="B")

inner_join(set1,set2)

R中经常遇到的问题就是格式的转换,字符向量转化为数据框,定义因子等

也可以通过以下代码统计个数

inner_join(set1,set2) %>% summarise(count=n())

Joining, by = "."
  count
1     3

反连接保留左侧数据中独有的行

anti_join(set1,set2) %>% summarise(count=n())

Joining, by = "."
  count
1     2
anti_join(set2,set1) %>% summarise(count=n())

Joining, by = "."
  count
1     1

可以看到分析过程还是很简单的,那是由于我们输入的数据很整洁,属于一个萝卜一个坑,但是如果我们的数据不整洁,一个框中有多个元素怎么办?

幸运的是tidyverse中有一系列函数可以让我们对数据进行切分、过滤、去重等,这些才是我们需要学习的重点,后面将会一一介绍

喜欢的小伙伴欢迎关注我的公众号R语言数据分析指南,持续分享更多优质资源

你可能感兴趣的:(ggplot2进行韦恩图分析)