2022-05-25如何绘制转录组指定基因的热图

2022-05-26  本文已影响0人  麦冬花儿

方法一
1、准备数据


图片.png

2、利用R语言中的pheatmap包进行热图的制作

#载入pheatmap
library(pheatmap)
# 进入到数据文件所在的文件夹路径下
setwd("E:/shengwuxinxi/基因组重测序数据操作步骤/作业")
#导入数据文件
mat=read.table("tumorous_v_survive.txt",header=TRUE,row.names=1,sep="\t",check.names = F)
dim(mat)
#利用pheatmap画热图,fontsize参数是用来设置字体大小
pheatmap(mat,cluster_rows =T,scale = "row",clustering_method = "average",fontsize=5,fontsize_row=5,fontsize_col=10,color=colorRampPalette(rev(c("red","white","blue")))(102))

3.得到的结果图是


图片.png

方法二
1、数据下载
https://doi.org/10.6084/m9.figshare.19125641
目的图片

图片.png
2、数据展示
图片.png
3、读取数据
library(readxl)

dat01<-read_excel("data/20220526/NaturePlantsFig3d.xlsx")
head(dat01)

论文中的图展示的是Z-score,数据应该是FPKM之类的,这里需要对数据集进行一个转化,这里关于zscore的计算我采用的公式是 以每个基因为单位,先取log2,然后是 (FPKM - mean(FPKM))/sd(FPKM) 这里我不确定这个转化做的对不对,这里的疑问是计算平均值和标准差的时候是用提供的所有基因的数据 还是用每个基因分别算平均值和标准差,我采用的是后者。
4、计算z-score

library(tidyverse)
library(stringr)
dat01 %>% 
  rowwise() %>% 
  mutate(mean_value = mean(c_across(2:16)),
         sd_value = sd(c_across(2:16))) %>% 
  mutate(across(2:16,~(.x-mean_value)/sd_value)) %>% 
  select(-c(mean_value,sd_value)) -> dat01.2

5、宽格式转换为长格式

dat01.2 %>% 
  reshape2::melt(id.vars="Gene") %>% 
  mutate(new_var=str_replace(variable,'-[123]','')) %>% 
  group_by(Gene,new_var) %>% 
  summarise(mean_value=mean(value)) %>%
  ungroup() -> dat01.3

6、开始绘图

library(ggplot2)  
library(paletteer)

dat01.3$new_var<-factor(dat01.3$new_var,
                        levels = c("Ph","Sb","Xy","Pi","Le1"))

ggplot(data = dat01.3,
       aes(x=Gene,y=new_var))+
  geom_tile(aes(fill=mean_value),
            color="white")+
  scale_fill_paletteer_c("ggthemes::Classic Red-Green",
                         direction = -1,
                         name="Expression level (Z-score)",
                         limits=c(-2,2))+
  scale_y_discrete(position = "right")+
  labs(x=NULL,y=NULL)+
  theme_minimal()+
  theme(panel.grid = element_blank(),
        legend.position = "top",
        axis.text.x = element_text(angle = 60,
                                   hjust = 1,
                                   vjust=1),
        plot.margin = unit(c(0.2,0.2,0.2,1),'cm'))+
  guides(fill=guide_colorbar(title.position = "top",
                             title.hjust = 0.5,
                             barwidth = 10,
                             barheight = 0.5,
                             ticks = FALSE))

7、结果展示


图片.png

方法三
软件推荐MeV(Multiple ExperimentViewer)

上一篇下一篇

猜你喜欢

热点阅读