首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >ggpolt2构建差异基因热图

ggpolt2构建差异基因热图

作者头像
R语言数据分析指南
发布2023-10-17 14:51:36
发布2023-10-17 14:51:36
4590
举报

❝本节分享如何基于差异基因分析的结果来绘制热图,主要还是基于ggplot2体系来实现,针对以往的代码风格,这次小编通过拆分数据定义每一部分的函数来编写新的代码,希望对各位观众老爷能有新的帮助,数据和代码已经被打包并上传到小编的2023VIP会员交流群。已经加群的朋友可以自行下载。如果你需要,可以参考文末的方式进行购买。 ❞

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

加载R包

代码语言:javascript
复制
library(tidyverse)
library(ggtree)
library(aplot)
library(scico)

读取并处理数据

代码语言:javascript
复制
process_data <- function() {
  gene <- read_tsv("diff.txt") %>% 
    arrange(desc(abs(logFC))) %>% 
    head(11) %>% 
    pull(id)
  
  df <- read_tsv("diffGeneExp.txt") %>% 
    pivot_longer(-id) %>% 
    filter(id %in% gene) %>% 
    pivot_wider(., names_from=name, values_from=value) %>% 
    column_to_rownames(var="id")
  
  dff <- df %>% 
    scale() %>% 
    as.data.frame() %>% 
    rownames_to_column(var="id") %>% 
    pivot_longer(-id) %>% 
    mutate(type = map_chr(name, ~str_split(.x, "_")[[1]][length(str_split(.x, "_")[[1]])]))
  
  list(df = df, dff = dff)
}

生成热图

代码语言:javascript
复制
generate_heatmap <- function(dff) {
  ggplot(dff, aes(name, id, fill=value)) +
    geom_tile() +
    scale_y_discrete(position = "right", expand = c(0,0)) +
    scale_fill_scico(palette = 'cork') +
    labs(x=NULL, y=NULL) +
    theme(axis.text.x=element_blank(),
          axis.text.y=element_text(color="black", size=8),
          axis.ticks = element_blank(),
          panel.background = element_blank(),
          plot.background = element_blank(),
          legend.background = element_blank(),
          legend.title =element_blank())
}

生成树状图

代码语言:javascript
复制
generate_tree <- function(df) {
  hclust(dist(df, method = "binary")) %>% 
    ggtree(layout="rectangular", branch.length="none") +
    theme_void()
}

生成类型图

代码语言:javascript
复制
generate_type_plot <- function(dff) {
  dff %>% 
    mutate(Type='Type') %>% 
    ggplot(aes(name, Type, fill=type)) +
    geom_tile() +
    scale_y_discrete(position = "right", expand = c(0,0)) +
    scale_fill_manual(values=c("#3B9AB2","#78B7C5")) +
    theme(panel.background = element_blank(),
          axis.ticks = element_blank(),
          axis.title = element_blank(),
          axis.text.x = element_blank(),
          plot.background = element_blank())
}

主函数

代码语言:javascript
复制
main <- function() {
  data <- process_data()
  heatmap <- generate_heatmap(data$dff)
  phr <- generate_tree(data$df)
  type_plot <- generate_type_plot(data$dff)
  
  heatmap %>% 
    insert_left(phr, width = 0.2) %>% 
    insert_top(type_plot, height = 0.08)
}

绘图

代码语言:javascript
复制
main()

❝本节内容介绍到此结束,过程仅供参考;

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言数据分析指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ❝本节分享如何基于差异基因分析的结果来绘制热图,主要还是基于ggplot2体系来实现,针对以往的代码风格,这次小编通过拆分数据定义每一部分的函数来编写新的代码,希望对各位观众老爷能有新的帮助,数据和代码已经被打包并上传到小编的2023VIP会员交流群。已经加群的朋友可以自行下载。如果你需要,可以参考文末的方式进行购买。 ❞
  • 关注下方公众号下回更新不迷路
  • 加载R包
  • 读取并处理数据
  • 生成热图
  • 生成树状图
  • 生成类型图
  • 主函数
  • 绘图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档