获取更多R语言知识,请关注公众号:医学和生信笔记
医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。
前面用2篇文章介绍了韦恩图的多种画法!
普通的韦恩图显示2-4个集合效果比较好,但是如果有很多个集合,韦恩图就不太美观了,即使是支持最多7个集合的ggvenndiagram
,因为彼此交叉太多,已经不利于呈现数据细节了。
library(ggVennDiagram)
library(ggplot2)
sets <- list(
a = sample(1:500,300),
b = sample(1:500,350),
c = sample(1:500,420),
d = sample(1:500,300),
e = sample(1:500,400),
f = sample(1:500,380),
g = sample(1:500,400)
)
ggVennDiagram(sets,
category.names = c("set 1","set 2","set 3","set 4","set 5","set6","set7"),
set_size = 6,
label = "none",
edge_lty = "solid",
edge_size = 1.2
) +
scale_fill_gradient(low = "grey90",high = "grey60")
这时候使用upset plot可能是更加合适的选择。
在R里面有很多包可以画upset plot,我们主要学习UpSetR
和complexheatmap
。
upsetR
基础使用
这个包的基础使用方法其实很简单,对于上面的数据集,直接使用就行。
library(UpSetR)
upset(fromList(sets),nsets = 7) # 也可以从矩阵或者数据框读取
这个图细节很多,但是不难理解,主题就是3各部分组成的。
左边条形显示每个集合元素数量,上面条形图展示每个交集内元素数量,下面的点(矩阵)表示所有出现的交集。
很多细节都是可以调整的,大家可以通过?upset
查看所有支持的参数,下面介绍一些常用的。
upset(fromList(sets),
order.by = "freq", # 排序方式
nsets = 5, # 展示几个集合,按照数量从大到小排列,或者使用sets参数指定集合名字
mb.ratio = c(0.55,0.45), # 条形图和矩阵的相对比例
number.angles = 30, # 条形图上面数字角度
point.size = 3, # 点的大小
line.size = 1.2, # 线条粗细
mainbar.y.label = "size of intersection", # 上面条形图的标题
sets.x.label = "the number of each sets", # 坐标条形图的标题
text.scale = c(1.3, 1.3, 1, 1, 2, 1.2) # 元素大小
)
text.scale控制7个元素的大小,要么提供1个数,要么提供7个数,每个数对应的元素种类如下:
intersection size title, intersection size tick labels, set size title, set size tick labels, set names, numbers above bars
个性化特定列(选择指定列)
可以通过一些简单的参数直接改变一些元素的颜色。
upset(fromList(sets),order.by = "freq",
matrix.color = "firebrick",
main.bar.color = "steelblue",
sets.bar.color = "grey70"
)
如果要指定某一个交集,改变外观,就需要queries
参数。
upset(fromList(sets),order.by = "freq",
main.bar.color = "steelblue",
sets.bar.color = "grey70",
# 选择指定交集,突出显示
queries = list(
list(query = intersects, params = list("b","f","e"),color = "orange",active = T), # 选择b,f,e的交集
list(query = intersects, params = list("g","f","e"),color = "red",active = T) # 选择e,f,g的交集
)
)
顾名思义,这个queries
参数其实就是一个查询,把符合查询条件的交集找出来,然后赋予特定的颜色标记等,达到突出显示某些结果的作用。
关于这个queries还有很多其他用法,不过需要的数据格式也是要提供更多的信息,大家有需要的可以至官网查看更多内容。或者等我更新
明天继续介绍这个upsetr包,十分强大,可以自定义的细节太多了~
获取更多R语言知识,请关注公众号:医学和生信笔记
医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。