大数跨境
0
0

跟着nature communications学绘图(11) ggtree优雅的绘制环状热图

跟着nature communications学绘图(11) ggtree优雅的绘制环状热图 R语言数据分析指南
2022-08-03
2

本节来复现「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如果你有一些让我感兴趣的图表提供示例数据小编若有时间会写成推文发送

小编微信

关注下方公众号下回更新不迷路


往期推荐

[会员专享] ggplot2优雅的绘制stamp图

跟着nature communications学绘图(10) ggplot2绘制菌群分布图

ggplot2优雅的给图像添加阴影

[会员专享] jjAnno完美复现nature microbiology图表之相关性热图

nature microbiology图表复现之聚类条形图

ggplot2添加躺平版P_value

ggplot2优雅的自定义轴文本颜色

ggplot2再话箱线图之几何填充

[会员专享]nature microbiology图表复现之热图终结版

ggplot2优雅的绘制全能型箱线图

ggplot2优雅的绘制多组配对箱线图

学习R数据可视化,你缺少这么一个群

ggplot2优雅的拆分堆砌条形图

箱线图进行方差分析并添加显著性标记

《R构建函数基础篇》计算多样性指数及绘图

分面绘图注释增强版之annotation_custom2

ggplot2优雅的给传统气泡图添加新元素

【声明】内容源于网络
0
0
R语言数据分析指南
R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
内容 1180
粉丝 0
R语言数据分析指南 R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
总阅读222
粉丝0
内容1.2k