导语
GUIDE ╲
维恩图用于展示在不同的事物群组(集合)之间的数学或逻辑联系,尤其适合用来表示集合(或)类之间的“大致关系”,它也常常被用来帮助推导(或理解推导过程)关于集合运算(或类运算)的一些规律。
背景介绍
绘制韦恩图可能是大家在对自己数据进行可视化时经常会碰到的问题,低维度的数据还好说,对于复杂点的数据如何画出美观的韦恩图呢?今天小编给大家介绍的R包是ggVennDiagram,一个专注于韦恩图绘制的工具,作者在在对其不断的进行版本完善,接下来就让我们看看如何使用吧!
R包安装
代码语言:javascript复制BiocManager::install("ggVennDiagram")
library(ggVennDiagram)
library(ggplot2)
可视化介绍
01
基本用法
示例数据:
代码语言:javascript复制genes <- paste0("gene",1:1000)
set.seed(20210302)
gene_list <- list(A = sample(genes,100),
B = sample(genes,200),
C = sample(genes,300),
D = sample(genes,200))
正常绘图
代码语言:javascript复制p1 <- ggVennDiagram(gene_list,
category.names = c("a very long name","short name","name","another name"))
p1
发现某些类别名称过长,显示不全,通过设置expand调整
代码语言:javascript复制p1 scale_x_continuous(expand = expansion(mult = .2))
显示交点值
代码语言:javascript复制set.seed(0)
small_list <- lapply(sample(6:10, size = 4), function(x){
sample(letters,x)
})
ggVennDiagram(small_list,
category.names = LETTERS[1:4],
show_intersect = TRUE)
类别名称颜色设置
代码语言:javascript复制ggVennDiagram(gene_list, set_color = c("blue","black","red","green"))
类别名称大小
代码语言:javascript复制ggVennDiagram(gene_list, set_size = 8)
设置文字内容(count/percent)
代码语言:javascript复制ggVennDiagram(gene_list, label = "count")
颜色和大小
代码语言:javascript复制ggVennDiagram(gene_list, label_color = "firebrick", label_size = 4)
边设置
代码语言:javascript复制ggVennDiagram(gene_list, edge_lty = "dashed", edge_size = 1)
调色板
代码语言:javascript复制library(ggplot2)
p <- ggVennDiagram(gene_list)
# Red Blue
p scale_fill_distiller(palette = "RdBu")
颜色展示:
代码语言:javascript复制RColorBrewer::display.brewer.all()
添加文字描述
代码语言:javascript复制p labs(title = "Four sets Venn Diagram",
subtitle = "generated by `ggVennDiagram`",
caption = Sys.Date())
02
一些其他形状
作者在更新过程中还给用户提供了不同的形状选择
代码语言:javascript复制ggVennDiagram:::shapes
#> # A tibble: 104 x 6
#> nsets type shape_id component id xy
#> <dbl> <chr> <chr> <chr> <chr> <list>
#> 1 4 ellipse 401f setEdge 1 <dbl [101 x 2]>
#> 2 4 ellipse 401f setEdge 2 <dbl [101 x 2]>
#> 3 4 ellipse 401f setEdge 3 <dbl [101 x 2]>
#> 4 4 ellipse 401f setEdge 4 <dbl [101 x 2]>
#> 5 4 ellipse 401f setLabel 1 <dbl [1 x 2]>
#> 6 4 ellipse 401f setLabel 2 <dbl [1 x 2]>
#> 7 4 ellipse 401f setLabel 3 <dbl [1 x 2]>
#> 8 4 ellipse 401f setLabel 4 <dbl [1 x 2]>
#> 9 3 circle 301f setEdge 1 <dbl [100 x 2]>
#> 10 3 circle 301f setEdge 2 <dbl [100 x 2]>
#> # ... with 94 more rows
可以根据自己的需求选择
代码语言:javascript复制plot_shapes()
默认情况下,在调用主函数 ggVennDiagram() 时只使用最合适的形状。但是可以自行指定形状。
代码语言:javascript复制# Generate example data.
genes <- paste0("gene",1:1000)
set.seed(20210701)
gene_list <- list(A = sample(genes,100),
B = sample(genes,200),
C = sample(genes,300),
D = sample(genes,200))
# construct a Venn object
venn = Venn(gene_list)
data = process_data(venn, shape_id == "401")
ggplot()
geom_sf(aes(fill = count), data = venn_region(data))
geom_sf(aes(color = id), data = venn_setedge(data), show.legend = FALSE)
geom_sf_text(aes(label = name), data = venn_setlabel(data))
geom_sf_label(aes(label = count), data = venn_region(data))
theme_void()
小编总结
作为韦恩图绘制使用非常广泛的一个包,ggVennDiagram的功能是十分全面且细致的,作者也在不断的更新维护,希望大家多多学起来,用到自己的工作中吧!