专栏名称: 生信师兄
本公众号旨在帮助广大的生信小白更好、更轻松的入门生信,专注生信干货分享。
51好读  ›  专栏  ›  生信师兄

【视频课程31】跟着NC学作图--基因融合热图+堆积柱状图注释

生信师兄  · 公众号  ·  · 2024-05-10 20:24

正文

封面

「生信常用分析图形系列」 「跟着高分SCI绘图系列」 从2021年10月份至今已经2年半的时间啦!在此期间师兄不仅总结更新的很多生信常用的图形绘制代码,也带着大家从各大顶级期刊中的Figuer入手,从仿照别人的作图风格到最后实现自己游刃有余的套用在自己的分析数据上!可以说是绝对的高质量,因此也受到了广大粉丝的青睐。与此同时,师兄的 「「R语言生信绘图群」」 ,也从 「最开始的0人逐渐到了现在的5群即将满员(即将达到2500名学员)」

但是只提供示例数据和代码,对于很多小白来说还是很难上手的, 「如何准确地理解每个图的意义,精准地掌握师兄的每一行代码,并且更加灵活地应用于自己的数据中?」 这才是众多小白更迫切需要的内容!于是,师兄准备开始录制 「高分SCI图表复现系列配套的视频教程」 ,以帮助大家更好地将师兄的代码发挥出最大的价值!

本系列课程特价仅售 「¥399元( 原价¥499元 )」 ,此外,购买本课程的小伙伴还可同时获得 「「生信常用分析图形系列」」 「「跟着高分SCI绘图系列」」 两个系列的所有代码和示例数据(包含既往已经更新,和后续即将更新的部分)。大家 「购买后请务必扫码加师兄微信」 ,师兄会及时拉群哦!

课程大纲

扫描右下角二维码购课

付费群学员福利:

已经加入生信师兄【R语言生信绘图群1-5群】的小伙伴可 「直接优惠¥189元,扫码添加师兄微信后领取专属优惠!」

「声明」

「本课程内容自动包含R语言绘图群所有内容」 ,购买本课程的小伙伴无需再额外购买R语言绘图群内容,也无需关注R语言绘图群价格变动,示例数据和代码将在文章更新后同步更新!

本期图形

参考文献

话不多说,直接上图!

读图

原图

效果展示

复现效果

本期示例数据为文章附件,大家可以通过以下链接下载:

https://static-content.springer.com/esm/art%3A10.1038%2Fs41467-022-31780-9/MediaObjects/41467_2022_31780_MOESM9_ESM.xlsx

由于 ComplexHeatmap 包自带的 rowAnnotation 柱状图注释效果有限,所以这里师兄用 ggplot2 绘制了左侧的堆积柱状图,最后用AI将两者拼接在一起!大家也可以自己尝试用 ComplexHeatmap 绘制,但是效果可能没这个好看。

R包载入和数据预处理

library(xlsx)
library(ComplexHeatmap)
library(tidyverse)
library(ggplot2)
library(circlize)
library(patchwork)
library(ggplotify)

# 读取文章附件数据:
data "41467_2022_31780_MOESM9_ESM.xlsx", sheetIndex = 1)
data 1:2), ]
colnames(data) 1,]
data 1,]

# 数据预处理:
data_mat % 
  pivot_wider(names_from = Var2, values_from = Freq) %>% 
  column_to_rownames("Var1")

data_mat T)]
data_mat T),]
data_mat2 data_mat2[which(data_mat2 == 0)] NA

热图

# 基础热图:
Heatmap(data_mat2,
        na_col = "white",
        # 去掉行列聚类:
        cluster_rows = F,
        cluster_columns = F)


# 修改颜色+添加文字和描边
col_fun = colorRamp2(c(051015), c("#b4d9e5""#91a1cf""#716bbf","#5239a3"))

p1         col = col_fun,
        na_col = "white",
        # 去掉行列聚类:
        cluster_rows = F,
        cluster_columns = F,
        row_names_side = "left",
        # 图例
        heatmap_legend_param = list(
          title = "Frequency(%)"
          title_position = "leftcenter",
          legend_direction = "horizontal"
        ),
        # 行名和列名:
        row_names_gp = gpar(fontsize = 10, font = 3),
        column_names_gp = gpar(fontsize = 10, font = 3),
        # 添加文字注释:
        cell_fun = function(j, i, x, y, width, height, fill) {
          if (!is.na(data_mat2[i,j])) {
            grid.text(sprintf("%1.f", data_mat2[i, j]), x, y, 
                      gp = gpar(fontsize = 10, col = "#df9536"))
            grid.rect(x, y, width, height,
                      gp = gpar(col = "grey", fill = NA, lwd = 0.8))
          }
        })

pdf("Heatmap.pdf", height = 8, width = 8)
draw(p1, heatmap_legend_side = "bottom")
dev.off()
热图







请到「今天看啥」查看全文