我已经阅读了很多Q& As关于在ggplot2中制作的热图的y轴排序,因此感觉不好写另一个,但我似乎无法实现我想要的。 (这可能是因为我是R的新手,我只是刚开始掌握术语以及如何运作。)提前感谢您的帮助!
我正在尝试为基因富集分析生成热图。我的数据以此格式导入为.csv文件:Gene Category Description Variable1 Variable2 Variable3
。因此,每一行列出一个基因,基因所属的类别(每个类别中有多个基因),基因类别的描述,与每个样本相关的数值(3列,每个样本的值)。
我想要做的是按类别对y轴进行排序,同时根据Gene绘制值。 (并且标记这个的方法太棒了!)下面是我到目前为止的代码....它似乎按字母顺序排列y轴。
library(ggplot2)
library(reshape2)
GO_sum <- read.csv("~/R/FuncEnr/GO_sum.csv", header=T)
GO_sum.m <- melt(GO_sum, id = c("Gene", "Category", "Description"), na.rm = FALSE)
(GOplot <- ggplot(GO_sum.m, aes(variable, Gene)) +
geom_tile(aes(fill = value), colour = "white") +
scale_fill_gradient2(low = "darkred", high = "darkblue", guide="colorbar"))
谢谢!
以下是一些示例数据(复制和粘贴,另存为.csv):
Gene Category Description s1 s2 s3
G0001 GO:0000036 acyl carrier activity -1.357472549 -1.357472549 -0.703587499
G0002 GO:0000103 sulfate assimilation 0 -0.761925294 -1.772268589
G0003 GO:0000104 succiNAte dehydrogeNAse activity -1.192800096 -1.192800096 -1.192800096
G0014 GO:0000160 two-component sigNAl transduction system (phosphorelay) 0 -1.772268589 -1.192800096
G0005 GO:0000287 magnesium ion binding -1.772268589 -1.772268589 -1.192800096
G0006 GO:0000287 magnesium ion binding -1.192800096 -1.192800096 -1.164082367
G0007 GO:0000287 magnesium ion binding -1.132072566 -1.772268589 -1.772268589
G0008 GO:0000287 magnesium ion binding -1.452170577 0 -1.192800096
G0009 GO:0000287 magnesium ion binding 0 -1.772268589 -1.192800096
G0083 GO:0003676 nucleic acid binding -1.192800096 -1.192800096 -1.772268589
G0044 GO:0003676 nucleic acid binding -0.587905946 -0.363837338 -0.843984355
G0045 GO:0003676 nucleic acid binding 0.212339083 0.212339083 0.276358685
G0046 GO:0003676 nucleic acid binding -0.374137972 -0.761925294 -0.761925294
G0147 GO:0003677 DNA binding 0 0 0
G0048 GO:0003677 DNA binding -1.192800096 0 -1.192800096
G0049 GO:0003677 DNA binding 0.530699113 -0.340270054 -0.485584696
G0050 GO:0003677 DNA binding -1.192800096 -0.374137972 -0.374137972
答案 0 :(得分:1)
我建议您使用facet_grid()
按照显示基因类别的列Description
来划分您的情节。使用参数scales="free_y"
和space="free_y"
,您可以确保每个方面的切片大小相同。只有你应该为Description
使用较短的名称,因为长名称不适合。
ggplot(GO_sum.m, aes(variable, Gene)) +
geom_tile(aes(fill = value), colour = "white") +
scale_fill_gradient2(low = "darkred", high = "darkblue", guide="colorbar")+
facet_grid(Description~.,scales="free_y",space="free_y")