2014-11-08 58 views
1

我有這個CSV有三列:https://dl.dropboxusercontent.com/u/73950/moduVSmnc.csv顯示3個維度上GGPLOT2二維情節

,看起來像這樣:

modu,apl,mnc 
0.30,2.06,51.0 
0.30,2.07,45.0 
0.30,2.10,35.0 
0.30,2.15,48.33 
0.30,2.20,35.33 
0.30,2.25,34.5 
0.30,2.24,28.0 
0.34,2.10,44.0 
0.34,2.15,47.5 
0.34,2.13,31.0 
0.34,2.20,36.0 
0.34,2.19,32.0 
0.34,2.20,49.0 
... 

我想顯示在變量「冒頓」 x軸,y軸上的「apl」,以及「mmc」作爲顏色

現在,我希望劇情是一個方形網格,就像這樣(抱歉,可怕的顏色......):

enter image description here

用ggplot2在R中完成這項工作的直接方法是什麼? 使用下面的代碼:

library(ggplot2) 
fileName = paste("/moduVSmnc.csv", sep = "") 
mydata = read.csv(fileName,sep=",", header=TRUE) 
ggplot(mydata)+geom_tile(aes(x=modu,y=apl,fill=mnc)) 

主要生產一些接近我所需要的:

enter image description here

除此之外,我需要「冒頓」和「APL」掉進垃圾桶,所以我有一個乾淨的格子,所有瓷磚都是1)填充顏色和2)彼此並排。

+1

http://learnr.wordpress.com/2010/01/26/ggplot2-quick-heatmap-plotting/ 和較多見:https://www.google.at/ webhp?sourceid = chrome-instant&ion = 1&espv = 2&ie = UTF-8#q = ggplot%20heatmap – Rentrop 2014-11-08 22:12:36

+0

謝謝!使用http://www.xeqtit.com/blog/2012/09/creating-a-heatmap-using-r-project-and-ggplot2#.VF6XHYc7mQs問題成爲數據格式問題。也就是說,如何從我的CVS獲得矩陣格式的數據集? – Rodolphe 2014-11-08 22:31:52

回答

2

像這樣?

df <- read.csv("https://dl.dropboxusercontent.com/u/73950/moduVSmnc.csv") 
breaks <- seq(1.95,2.5,by=0.05) 
gg <- aggregate(mnc~cut(apl,breaks=breaks)+modu,df,mean) 
colnames(gg)<- c("apl","modu","mnc") 
gg$modu <- as.factor(gg$modu) 
library(ggplot2) 
library(RColorBrewer) 
ggplot(gg) + 
    geom_tile(aes(x=modu,y=apl,fill=mnc))+ 
    scale_fill_gradientn(colours=rev(brewer.pal(10,"Spectral")))+ 
    coord_fixed() 

所以,這把apl可變進垃圾箱就像你說的,然後計算平均mnc每個箱。 modu值已被分類。我們需要將(裝箱的)aplmodu轉換爲因子,並設置coord_fixed(...)以獲得正方形瓷磚。

注意到有些箱是空的......

EDIT:迴應OP的評論。

cut(...)函數生成默認情況下顯示每個bin中的範圍的標籤。您可以使用labels=...參數更改此參數,如下所示。

df <- read.csv("https://dl.dropboxusercontent.com/u/73950/moduVSmnc.csv") 
breaks <- seq(1.95,2.5,by=0.05) 
gg <- aggregate(mnc~cut(apl,breaks=breaks, 
         labels=format(breaks[-1],nsmall=2))+modu, 
       df,mean) 
colnames(gg)<- c("apl","modu","mnc") 
gg$modu <- as.factor(gg$modu) 
library(ggplot2) 
library(RColorBrewer) 
ggplot(gg) + 
    geom_tile(aes(x=modu,y=apl,fill=mnc))+ 
    scale_fill_gradientn(colours=rev(brewer.pal(10,"Spectral")))+ 
    coord_fixed() 

+0

哦,這是如此之大...... y軸顯示兩個數字有什麼原因嗎?是否有可能只顯示第二個號碼? 謝謝! – Rodolphe 2014-11-08 22:41:13