2013-05-10 297 views
0

因此,我正在將兩個.csv文件讀入含有大腦區域的基因表達值的數據框。他們看起來有點像這樣:R:可視化網格中的p值?

reg1 reg2  reg3 reg4 reg5 reg6 reg6 reg7  reg8 
1 0.2036 0.6400 -2.2647 0.5345 0.9812 -0.0390 -1.4486 -0.1340 -1.9157 
2 -0.0308 0.2991 -1.8990 0.7063 0.8807 -0.0568 -1.5150 -0.8000 -1.5115 
3 -0.0242 0.6358 -2.1675 0.8432 0.8149 -0.0955 -1.3789 -0.2266 -1.5513 
4 -0.8990 0.5613 -2.0289 0.8544 1.1060 -0.3846 -1.4800 -0.0717 -1.4325 
5 -0.6438 0.8719 -2.2708 0.6790 1.0250 -0.3035 -1.1125 -0.3746 -1.5219 
6 -0.7945 0.5943 -1.8478 0.5457 0.7989 -0.1093 -2.3242 0.2995 -1.8066 

我以P值使用以下命令來運行對對方的基因對每個區域的t檢驗(的區域在兩個相同的比較表達率.csv文件)。

geneA = read.csv("geneA.csv") 
geneB = read.csv("geneB.csv") 
test.result = mapply(t.test, geneA, geneB) 

#store p-values in a column with regions in a separate column: 
p.values = stack(mapply(function(x, y) t.test(x,y)$p.value, geneA, geneB)) 

#order p-values 
ordered = p.values[with(p.values, order(values)),] 

現在我想用這些p值做什麼是他們展示的地圖,將是這個樣子(p值是由):

    geneB 

       reg1 reg2 reg3 reg4 ... 
    reg1  .02 .02 .01 .12 
    reg2  .03 .03 .05 .02 

基因A-REG3 .01 .05 .05 .05 reg4 .01 .06 .21 .02 ... 等等。有什麼建議麼?東西圖形是首選。

回答

4

是否這樣?

m1 <- as.matrix(read.table(text=" reg1 reg2  reg3 reg4 reg5 reg6 reg6 reg7  reg8 
1 0.2036 0.6400 -2.2647 0.5345 0.9812 -0.0390 -1.4486 -0.1340 -1.9157 
2 -0.0308 0.2991 -1.8990 0.7063 0.8807 -0.0568 -1.5150 -0.8000 -1.5115 
3 -0.0242 0.6358 -2.1675 0.8432 0.8149 -0.0955 -1.3789 -0.2266 -1.5513 
4 -0.8990 0.5613 -2.0289 0.8544 1.1060 -0.3846 -1.4800 -0.0717 -1.4325 
5 -0.6438 0.8719 -2.2708 0.6790 1.0250 -0.3035 -1.1125 -0.3746 -1.5219 
6 -0.7945 0.5943 -1.8478 0.5457 0.7989 -0.1093 -2.3242 0.2995 -1.8066",header=TRUE)) 

m2 <- matrix(rnorm(54),nrow=6) 

fun <- Vectorize(function(i,j) t.test(m1[,i],m2[,j])$p.value) 
res <- outer(1:9,1:9,FUN = "fun") 

image(1:9,1:9,res,axes=FALSE,xlab="m1",ylab="m2") 
axis(1, at = 1:9,labels=colnames(m1)) 
axis(2, at = 1:9,labels=colnames(m1)) 

enter image description here


編輯

下面是使用GGPLOT2一個情節:

colnames(res) <- colnames(m1) 
res <-as.data.frame(res) 
res$group <- colnames(m1) 

library(reshape2) 
res <- melt(res,id="group") 

library(ggplot2) 
p <- ggplot(res, aes(x=group, y=variable)) + 
    geom_tile(aes(fill = value), colour = "yellow") + 
    scale_fill_gradient(low = "yellow", high = "red", name="p-value") + 
    geom_text(aes(label=format(value,digits=2))) + 
    labs(x="m1",y="m2") 

print(p) 

enter image description here

+0

非常喜歡我在尋找什麼的,是的(和謝謝!),除了用數值列出的顯式p值(而不是在熱圖中)。事實上,熱圖上的數字是理想的,但我不想推動我的運氣。 – soosus 2013-05-10 18:01:34

+1

我添加了你想要的陰謀。 – Roland 2013-05-10 19:24:35