❝本节来复现「nature microbiology」上的一张环状热图,图表主要使用「ggplot2」,「ggtree」,「ggtreeExtra」等包来实现,
❞此图的重点不在绘图方,而是在于如何构建绘图数据下面来进行具体介绍,「数据代码已经上传VIP交流群」
Multi-modal molecular programs regulate melanoma cell state
❝❞
有需要的观众老爷欢迎加入小编的VIP群,目前已经上传「2021-2022两年公众号文档数据+代码约190篇左右」包含付费文档,扫描文末尾二维码加小编微信「付费99元」后邀请进群,「由于群名额有限人满之后将不在添加新成员」,有需要的请尽早加入,早进早享受;「一定让你感受到物超所值」,加入小编的VIP如果你有一些让我感兴趣的图表提供示例数据小编若有时间会写成推文发送
加载R包
package.list=c("tidyverse","ggtreeExtra","ggtree","treeio","ggnewscale","patchwork","ComplexHeatmap")
for (package in package.list) {
if (!require(package,character.only=T, quietly=T)) {
install.packages(package)
library(package, character.only=T)
}
}
数据清洗
df <- read_tsv("data.xls") %>% pivot_longer(-gene) %>%
mutate(group=case_when(value == 0 ~ "not regulated",
name=="CNA" & value== 1 ~ "CNA (direct)",
name=="mir" & value== 1 ~ "miRNA (inverse)",
name=="methylationpromoter" & value==1 ~ "methylation (direct)",
name=="methylationgenebody" & value==1 ~ "methylation (direct)",
name=="methylationanywhere" & value==1 ~ "methylation (direct)",
name=="methylationpromoter" | name=="methylationgenebody" | name=="methylationanywhere" |
value == -1 ~ "methylation (inverse)"))
定义因子
df$group <- factor(df$group,levels = c("CNA (direct)","miRNA (inverse)","methylation (inverse)",
"methylation (direct)","not regulated"))
df$name <- factor(df$name,levels = rev(c("methylationgenebody","methylationanywhere","methylationpromoter",
"mir","CNA")))
数据可视化-1
g1 <- hclust(dist(read_tsv("data.xls") %>%
column_to_rownames(var="gene"))) %>% ggtree(layout="fan", open.angle=0, size=0.3) %>%
rotate_tree(.,angle=0)+ # 旋转图形
geom_tiplab(size=3,family="Times",color="black",offset=0.53)+
new_scale_fill()+
geom_fruit(data=df, geom=geom_tile,
mapping=aes(y=gene,x=name,fill=group),
color = "grey50",offset = 0.04,size = 0.02)+
scale_fill_manual(values=c("#5686C3","#973CB6","#F5A300","#75C500","#D9D9D9"))+
theme(legend.position="non")
数据清洗
p2 <- read_tsv("data2.xls") %>% pivot_longer(-gene) %>%
mutate(group=case_when(value == 0 ~ "not regulated",
name=="CNA" & value== 1 ~ "CNA (direct)",
name=="mir" & value== 1 ~ "miRNA (inverse)",
name=="methprom" & value==1 ~ "methylation (direct)",
name=="methbody" & value==1 ~ "methylation (direct)",
name=="methanywhere" & value==1 ~ "methylation (direct)",
name=="methprom" | name=="methbody" | name=="methanywhere" |
value == -1 ~ "methylation (inverse)"))
p2$group <- factor(p2$group,levels = c("CNA (direct)","miRNA (inverse)","methylation (inverse)",
"methylation (direct)","not regulated"))
p2$name <- factor(p2$name,levels = rev(c("methbody","methanywhere","methprom","mir","CNA")))
g2 <- hclust(dist(read_tsv("data2.xls") %>% column_to_rownames(var="gene"))) %>% ggtree(layout="fan", open.angle=0, size=0.3) %>%
rotate_tree(.,angle=0)+
geom_tiplab(size=3,family="Times",color="black",offset=0.6)+
new_scale_fill()+
geom_fruit(data=p2, geom=geom_tile,
mapping=aes(y=gene,x=name,fill=group),
color = "grey50",offset = 0.04,size = 0.02)+
scale_fill_manual(values=c("#5686C3","#973CB6","#F5A300","#75C500","#D9D9D9"))+
theme(legend.position="non")
拼图
g1+g2
绘制图例
lgd = Legend(labels =c("CNA (direct)","miRNA (inverse)","methylation (inverse)",
"methylation (direct)","not regulated"),
legend_gp = gpar(fill=c("#5686C3","#973CB6","#F5A300","#75C500","#D9D9D9")),
labels_gp = gpar(col = "black", fontsize = 10),
grid_width = unit(7,"mm"),grid_height=unit(3,"mm"))
draw(lgd,x = unit(0.55,"npc"),y = unit(0.85,"npc"),just = c("right","top"))
❝好了本节介绍到此结束,整个代码还是非常简洁的主要还是在于数据的构建,
❞喜欢的观众老爷欢迎分析转发,「当然更推荐大家加入我的VIP交流群」扫描下方二维码加小编微信「付费99元」后邀请进群,「一定让你感受到物超所值」,「添加小编微信请备注来意,以便高效处理」,加入小编的VIP如果你有一些让我感兴趣的图表提供示例数据小编若有时间会写成推文发送
小编微信

关注下方公众号下回更新不迷路
往期推荐

