2014-10-12 18 views
0

嗨,我想要繪製在GGPLOT2熱圖,使用帶有9行10列GGPLOT2預計即使矩陣不是對稱

我融化使用「as.matrix」矩陣的矩陣方陣符號在reshape2和得到下面的輸出

A1 =熔體(as.matrix(A))

Var1 Var2  value 
1  1 X0.05 8.690705e-01 
2  2 X0.05 1.930320e-01 
3  3 X0.05 1.474900e-02 
4  4 X0.05 3.498176e-04 
5  5 X0.05 2.451419e-06 
6  6 X0.05 4.946808e-09 
7  7 X0.05 2.832895e-12 
8  8 X0.05 4.563140e-16 
9  9 X0.05 2.055474e-20 
10 1 X0.1 5.906241e-01 
11 2 X0.1 7.416265e-01 
12 3 X0.1 2.311771e-01 
13 4 X0.1 3.892639e-02 
14 5 X0.1 3.361408e-03 
15 6 X0.1 1.445629e-04 
16 7 X0.1 3.043528e-06 
17 8 X0.1 3.103555e-08 
18 9 X0.1 1.522292e-10 

輸出與由9個值

第I表示的每個列正確恩按值重新調整,並得到下面的輸出

A2 = ddply(A1,。(VAR2),改造,重新調整=重新調整(值))

Var1 Var2  value  rescale 
1  1 X0.05 8.690705e-01 1.000000e+00 
2  2 X0.05 1.930320e-01 2.221132e-01 
3  3 X0.05 1.474900e-02 1.697101e-02 
4  4 X0.05 3.498176e-04 4.025192e-04 
5  5 X0.05 2.451419e-06 2.820737e-06 
6  6 X0.05 4.946808e-09 5.692068e-09 
7  7 X0.05 2.832895e-12 3.259684e-12 
8  8 X0.05 4.563140e-16 5.250361e-16 
9  9 X0.05 2.055474e-20 0.000000e+00 
10 1 X0.1 5.906241e-01 7.963902e-01 
11 2 X0.1 7.416265e-01 1.000000e+00 
12 3 X0.1 2.311771e-01 3.117163e-01 
13 4 X0.1 3.892639e-02 5.248786e-02 
14 5 X0.1 3.361408e-03 4.532480e-03 
15 6 X0.1 1.445629e-04 1.949266e-04 
16 7 X0.1 3.043528e-06 4.103651e-06 
17 8 X0.1 3.103555e-08 4.164269e-08 
18 9 X0.1 1.522292e-10 0.000000e+00 

一切看起來還是很好,當我繪製熱映射的輸出是正確的,到目前爲止好

ggplot(A2, aes(Var2, Var1)) + geom_tile(aes(fill = rescale), colour = "white") + scale_fill_gradient(low = "light blue", high = "dark blue") 

Heat_map1

的問題出現了,當我添加自定義標籤,其中y軸線進入從1至9(第顯示雜合子個體電子數)和x軸變爲0.05至0.5(顯示次要等位基因頻率)

x = [0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50] 
y = [1 2 3 4 5 6 7 8 9] 

ggplot(A4, aes(Var2, Var1)) + geom_tile(aes(fill = rescale), colour = "white") + scale_fill_gradient(low = "light blue", high = "dark blue") + scale_x_discrete(labels= x, expression("Minor allele frequency")) + scale_y_discrete(labels= y, expression("Number of Heterozygotes")) 

然而此時的Y軸是全亂了

Heat_map2

它在我看來,ggplot會自動假設一個10X10的矩陣並嘗試添加缺少的標籤。我試圖找到重塑的選項,我可能會聲明矩陣的形狀,但我無法找到解決方案。有沒有人遇到過這個問題。任何幫助將不勝感激,在此先感謝

回答

0

這是一種方法。您可以使用scale_x_discrete更改刻度標記標籤。至於y,我將Var1轉換爲因子。

ggplot(mydf, aes(x = Var2, y = as.factor(Var1), fill = rescale)) + 
geom_tile(color = "white") + 
scale_fill_gradient(low = "light blue", high = "dark blue") + 
scale_x_discrete(breaks=c("X0.05", "X0.1"), labels=c("0.05", "0.1")) + 
xlab("Minor allele frequency") + 
ylab("Number of Heterozygotes") 

enter image description here

+0

謝謝你,「as.factor」的伎倆,我猜測,除非你指定ggplot把所有標籤爲連續 – iksaglam 2014-10-12 10:30:50

+0

@iksaglam很高興地聽到,這可以幫助你。 – jazzurro 2014-10-12 11:41:33