通过另一个因子(非字母顺序)R来命令ggplot的y轴

时间:2013-06-07 23:15:08

标签: r ggplot2 r-factor

我已经阅读了很多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

1 个答案:

答案 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")