天天看點

R 熱圖繪制heatmap①

R.package

  • heatmap():用于繪制簡單熱圖的函數
  • heatmap.2():繪制增強熱圖的函數
  • d3heatmap:用于繪制互動式熱圖的R包
  • ComplexHeatmap:用于繪制、注釋和排列複雜熱圖的R&bioconductor包(非常适用于基因組資料分析)

首先使用ggplot2畫簡單熱圖

data <- as.data.frame(matrix(rnorm(9*10),9,10))

rownames(data) <- paste("Gene", 1:9, sep="_")
colnames(data) <- paste("sample", 1:10, sep="_")
library(reshape2)
library(ggplot2)
data$ID <- rownames(data)
data_m <- melt(data, id.vars=c("ID"))
View(data_m)
           
  • data為9行10列的标準正太分布資料。
  • 使用paste對行列名簡單命名。
  • melt函數将data轉化為gene-id列,sample-variable列,以及表達值-value列。
    R 熱圖繪制heatmap①
R 熱圖繪制heatmap①
p <- ggplot(data_m, aes(x=variable,y=ID)) + 
  xlab("samples") +  theme_classic() + theme(axis.ticks = element_blank(),
                axis.line = element_blank()) + 
  theme(panel.grid.major = element_blank()) + 
  theme(legend.key=element_blank())  +
  theme(axis.text.x=element_text(angle=45,hjust=1, vjust=1)) + 
  theme(legend.position="top") +  
  geom_tile(aes(fill=value)) + 
  scale_fill_gradient2("Expression",
                       low = "green", 
                       high = "red",
                      mid = "black")
p

           
R 熱圖繪制heatmap①
  • theme_classic() + #去掉灰快
  • theme(axis.ticks = element_blank(),

    axis.line = element_blank()) + #去掉邊框

  • xlab('row name') +

    ylab('column name') #更改行名和列名

  • scale_x_discrete(labels = 1:10, breaks = 1:10) +

    scale_y_discrete(labels = 1:10, breaks = 1:10) #修改行和列

  • scale_fill_gradient2('legend name',

    low = 'blue', high = 'red', mid = 'white') #修改圖例名字以及圖中顔色

大神Y叔也有畫熱圖的ggplot2講解,連結:聽說你還不會畫heatmap
https://guangchuangyu.github.io/cn/2017/09/dose-simplot/           

繼續閱讀