我有一个数据框,其中包含3列融合数据(长和薄),我想创建一个比较基因的成对散点图(例如,基因A与基因B,基因A与基因C,基因B) vs C等等)在多达10个基因的格子中。我开始使用geom_point(),但无法找出在美学中传递x和y值的最佳方法,所以我开始查看成对数据的其他选项,如pair,splom,plotmatrix,但我认为数据需要是转换为每个基因作为列的格式和行中的值。
起初看起来很简单,但我是R / ggplot的新手,似乎无法在网上找到合适的解决方案。
ID Gene value 830 Gene_A 1.8 831 Gene_A 0.4 832 Gene_A 2.5 833 Gene_A 2.3 834 Gene_B -5.1 835 Gene_B 3.6 836 Gene_B 2.0 837 Gene_B 3.2 837 Gene_C -1.6 838 Gene_C -1.4 839 Gene_C -5.5 840 Gene_C -4.4 841 Gene_D -2.7 842 Gene_D -3.2 843 Gene_D -2.5 844 Gene_D -2.5
答案 0 :(得分:1)
好的,我能够使用以下代码解决这个问题:
library(reshape2)
library(ggplot)
#first convert data to generate new ID for each gene
dat$ID<-NULL
dat<-within(dat,{Gene<-as.character(Gene)
ID<- ave(Gene,Gene,FUN=seq_along)
})
有关重塑此类数据框的示例,请参阅此链接以获取相关信息 Reshape data.frame with two columns into multiple columns with data (R)
#cast the new dataset with 1 id per gene, convert from long to wide
dat<-dcast(dat, ID~Gene,value.var="value")
#setup new data frame for plotting
dat4plot=dat
#need to remove ID for plotting
dat4plot$ID=NULL
#Generate plot using pairs function,removed upper panel to see better
pairs(dat4plot,pch=21,bg="red",upper.panel=NULL)
我对此感到满意,但也欢迎提出更有效的建议!!!