【发布时间】:2013-12-14 15:59:39
【问题描述】:
我正在使用 R 包 cummeRbund(来自 Bioconductor)来可视化 RNA-seq 数据,我创建了一个名为“DEG_genes”的 cuffGeneSet 实例,其中包含 662 个在男性和女性之间显着差异表达的基因。我的目标是使用 csHeatmap() 创建一个热图,其中男性和女性样本(重复)是分开的,但在性别类别中具有特定的用户定义顺序。 我用过:
> DEG<-diffData(genes(cuff)) # take differentially expressed genes
> DEG_significant<-subset(DEG,significant=='yes') # retain only significant changes
> DEG_sign_IDs <- DEG_significant$gene_id # retrieve IDs
> DEG_genes<-getGenes(cuff,DEG_sign_IDs) # get CuffGeneSet instance
> hmap<-csHeatmap(DEG_genes,clustering='none',labRow=F,replicates=T)
这给了我几乎想要的东西:热图显示左侧为女性,右侧为男性,但它们按字母顺序排列(Female_0,Female_1,Female_10,Female_11,Female_12...Female_19,Female_2,Female_20,Female_21.. ,Female_29 在左侧,对于男性 Male_0,Male_1,Male_10...Male_19,Male_2,Male_20...等在右侧),我希望它们按特定顺序排列(clusterReps)。我创建了一个具有特定顺序重复名称的测试向量(左侧为男性,0 和 6 改变,右侧为女性),如下所示:
clusterReps<-c("Male_6","Male_1","Male_2","Male_3","Male_4","Male_5","Male_0","Male_7","Male_8","Male_9","Male_10","Male_11","Male_12","Male_13","Male_14","Male_15","Male_16","Male_17","Male_18","Male_19","Male_20","Male_21","Male_22","Male_23","Male_24","Male_25","Male_26","Male_27","Male_28","Male_29","Male_30","Male_31","Male_32","Male_33","Female_0","Female_1","Female_2","Female_3","Female_4","Female_5","Female_6","Female_7","Female_8","Female_9","Female_10","Female_11","Female_12","Female_13","Female_14","Female_15","Female_16","Female_17","Female_18","Female_19","Female_20","Female_21","Female_22","Female_23","Female_24","Female_25","Female_26","Female_27","Female_28")
我希望数据完全相同,除了列的顺序必须遵循“clusterReps”向量的顺序。知道热图是一个ggplot,过去两天我到处寻找解决方案,但没有成功(尽管stackoverflow上的heatmap.2()而不是csHeatmap()有一个非常相似的问题,我试图获得一个复制的fpkm矩阵并使用 heatmap.2 但只能使用 heatmap_2 并且某些选项不被接受)。 使用:
> hmap<-hmap+scale_x_discrete(limits=clusterReps)
Scale for 'x' is already present. Adding another scale for 'x', which will replace the existing scale.
仅更改 x 轴标签,但不更改实际数据(热图保持不变)。 是否有类似的功能可以重新排列列而不仅仅是标签? 提前感谢您的帮助,我不熟悉处理 ggplot 对象,尤其是来自 cummeRbund 的热图。
编辑: 以下是我可以提供的更多信息:
> DEG_genes
CuffGeneSet instance for 662 genes
Slots:
annotation
fpkm
repFpkm
diff
count
isoforms CuffFeatureSet instance of size 930
TSS CuffFeatureSet instance of size 785
CDS CuffFeatureSet instance of size 230
promoters CuffFeatureSet instance of size 662
splicing CuffFeatureSet instance of size 785
relCDS CuffFeatureSet instance of size 662
> summary(DEG_genes)
Length Class Mode
662 CuffGeneSet S4
恐怕我暂时无法提供更多信息,如果您希望我执行命令并报告输出是否有帮助,请告诉我。
【问题讨论】:
-
这可能是一个重复的问题,许多答案都回答了这些问题,这些答案描述了如何改变因子水平的绘图顺序,不仅在 ggplot2 中,而且在几乎所有 R 绘图例程中。无法测试这种强烈的怀疑,因为您未能提供对 DEG_genes 数据对象的充分描述。 (您也没有注意到“cummeRbund”是一个 BioConductor 包。)
-
我不确定我们是否更接近了,因此会添加对 str(DEG_sign_IDs) 的请求,这可能是一个普通因素,其级别可能可以修改。您在指示您从何处获取绘图功能方面做得非常不充分。如果那是您正在使用的代码,您应该发布包名称和链接到 SO 答案。
-
> str(DEG_sign_IDs) chr [1:662] "XLOC_000057" "XLOC_000221" "XLOC_000245" ...我正在遵循使用 cummeRbund 的协议,但我没有足够的 R 知识知道/了解数据是如何通过这个包的方法组织的,或者如何按照我想要的方式修改它。手册可在compbio.mit.edu/cummeRbund/manual_2_0.html 获得
标签: r ggplot2 heatmap user-defined