簡體   English   中英

在geom_tile圖中的y軸上添加行名

[英]Adding row names on y-axis in geom_tile plot

我正在將數據框繪制為熱圖(使用geom_tile),並且我希望輸入矩陣中的行名稱沿y軸。 這是我的代碼:

head(data)
                 0h_rep2   0h_rep1   1h_rep2   1h_rep1   4h_rep2   4h_rep1   9h_rep2  9h_rep1    15h_rep2  15h_rep1  18h_rep2  18h_rep1  21h_rep2  21h_rep1
hsa-let-7d-5p  11.485307 11.660549 11.383846 11.623624 11.395039 11.499499 11.660549 11.515537   11.697380 11.794755 11.803184 11.899935 12.225001 12.006919
hsa-let-7e-5p   10.660692 10.732285 10.869931 10.966696 10.984550 10.942785 10.966696 10.853484  10.963071 11.072640 11.315740 11.290014 11.643941 11.360874

pd <- as.data.frame(scale(t(data)))
pd$Time <- sub("", "", rownames(pd))
pd.m <- melt(pd)

head(pd.m)
 Time      variable      value
1 0h_rep2       11     -0.8495269
2 0h_rep1       11     -0.1199689
3 1h_rep2       11     -1.2719237

pd.m$variable <- as.numeric(factor(pd.m$variable, levels =     rev(as.character(unique(pd.m$variable))), ordered=F))
p <- ggplot(pd.m, aes(Time, variable))
p  + geom_tile(aes(fill = value)) + 
 scale_fill_gradient2(low=muted("blue"), high=muted("red")) +
 scale_x_discrete(labels=c("0h_rep2", "0h_rep1","1h_rep2","1h_rep1","4h_rep2","4h_rep1","9h_rep2","9h_rep1", "15h_rep2", "15h_rep1","18h_rep2","18h_rep1","21h_rep2","21h_rep1")) + 
 theme_bw(base_size=20) + 
 theme(axis.text.x=element_text(angle=0, vjust=0.5, hjust=0, size=12),    axis.text.y=element_text(size=12), strip.text.y=element_text(angle=0, vjust=0.5, hjust=0.5, size=12),
                             strip.text.x=element_text(size=12)) +     labs(y="Genes", x="Time (h)", fill="")

盡管我們沒有完整的數據,但是如果您有一個data.frame開頭,只需刪除該行

pd.m$variable <- as.numeric(factor(pd.m$variable, levels = rev(as.character(unique(pd.m$variable))), ordered=F))

您的代碼似乎會自動用行名標記y軸-行名在融化后成為variable (因子)值。

在此處輸入圖片說明

library(reshape)
library(ggplot2)
library(scales)

pd <- as.data.frame(scale(t(data)))
pd$Time <- sub("", "", rownames(pd))
pd.m <- melt(pd)

> head(pd.m)
     Time      variable      value
1 0h_rep2 hsa-let-7d-5p -0.8495260
2 0h_rep1 hsa-let-7d-5p -0.1199692
3 1h_rep2 hsa-let-7d-5p -1.2719223

p <- ggplot(pd.m, aes(Time, variable))
p  + geom_tile(aes(fill = value)) +
  scale_fill_gradient2(low=muted("blue"), high=muted("red")) +
#  scale_x_discrete(labels=c("0h_rep2","0h_rep1","1h_rep2","1h_rep1", "4h_rep2",
#                            "4h_rep1","9h_rep2","9h_rep1", "15h_rep2", "15h_rep1",
#                            "18h_rep2","18h_rep1","21h_rep2","21h_rep1")) +
  theme_bw(base_size=20) +
  theme(axis.text.x=element_text(angle=0, vjust=0.5, hjust=0, size=12),        
        axis.text.y=element_text(size=12), 
        strip.text.y=element_text(angle=0, vjust=0.5, hjust=0.5, size=12),
        strip.text.x=element_text(size=12)) +     
  labs(y="Genes", x="Time (h)", fill="") +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)

注意:我添加了最后一行來旋轉x軸標簽,並且還注釋掉了您的手動x縮放比例,因為它似乎會導致Time標簽不匹配-但這也許是故意的嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM