2014-03-31 54 views
2

我很新的GGPLOT2並試圖透過這個9個GEOM瓷磚地塊改變細粒度的顏色圖例融化dataset和下面的代碼如何使用GGPLOT2

cm <- read.table("http://dl.dropboxusercontent.com/u/7147744/cm_melted.log", header=T, sep=" ") 
xlab = expression(italic(lb)~(Normalised)) 
ylab = expression(italic(dti)~(Normalised)) 

ggplot(cm, aes(x=LB, y=DTI)) + 
    facet_wrap(~Method, ncol=3) + 
    geom_tile(aes(fill=CM), colour="white") + 
    scale_fill_gradient(low="white", high="steelblue") + 
    theme_bw() + 
    coord_equal() + 
    xlab(xlab) + 
    ylab(ylab) + 
    ggtitle("Comparison of different methods based on composite metric") 

我會喜歡以更精細的粒度更改瓷磚和圖例的顏色。例如,如果CM的最小值爲0並且最大值爲1,則圖例和拼貼應由11種不同的顏色組成,步長爲0.1。

另一個值得關注的問題是如何將`CM'中的NA值的標題顏色變爲白色,以便主焦點僅與下三角形一致。

最後一件事情是我可以使用這些情節的黑白圖案填充?或者任何其他合適的建議用於印刷品質量圖。

非常感謝。

UPDATE1:

同時使用geom_tile(aes(fill=factor(value), colour="white")) +我可以得到下面的情節,因爲它是顏色編碼的基礎上CM

+0

我不能再現情節,因爲'熔體(釐米)'僅具有2列(變量,價值),而你期望它包含LB,DTI和CM。可能'id.vars'設置不正確? – tonytonov

+0

我已經將融化的數據集上傳到https://dl.dropboxusercontent.com/u/7147744/cm_melted.log,我猜你可以直接使用它而不熔化() – joarderm

+0

也嘗試過,但它也需要'價值'在'fill = value'中。請編輯問題,以便數據與代碼直接兼容。 – tonytonov

回答

3

這裏就是你可以開始每個不同的值。你說的規模應該是從0到1,但在你的例子最大是0.6左右,所以我把該考慮:

p <- ggplot(cm, aes(x=LB, y=DTI)) + 
     facet_wrap(~Method, ncol=3) + 
     geom_tile(aes(fill=CM), colour="white") + 
     theme_bw() + 
     coord_equal() + 
     xlab(xlab) + 
     ylab(ylab) + 
     ggtitle("Comparison of different methods based on composite metric") 

# n equally placed breaks for n colours 
n_breaks <- 10 
br <- c(0, max(na.omit(cm$CM))) 
split_interval <- function(v, n) seq(from=v[1], to=v[2], length.out=n) 
p + scale_fill_gradientn(colours = rainbow(n_breaks), 
         na.value = "white", 
         breaks = split_interval(br, n_breaks)) 

玩休息和顏色數了一下,以獲得最合適的圖片。檢查可用的調色板,默認色調應該更合適。 enter image description here

+0

很好的回答!我也越來越近:)我也發佈我的版本。再次感謝。 – joarderm

+0

歡迎您! – tonytonov

+0

只爲了解最後一件事,是否可以使用黑白填充圖案而不是顏色。 – joarderm

1

感謝@tonytonov的好評。我同時也分享了我正在嘗試的內容和結果。 [注意:修改的數據集cm包括方法名,而不是數字1到9]

max_cm <- max(na.omit(cm$CM)) 
min_cm <- min(na.omit(cm$CM)) 

ggplot(cm, aes(x=LB, y=DTI)) + 
    facet_wrap(~Method, ncol=3) + 
    geom_tile(data= subset(m, !is.na(CM)), aes(fill=CM)) + 
    scale_fill_gradientn(colours=c("darkgreen", "green", "greenyellow", "yellow", "red", "darkred"), breaks=seq(0, 1, 0.1), "CM", limit=c(min_cm, max_cm)) + 
    theme_bw() + 
    coord_equal() + 
    xlab(xlab) + 
    ylab(ylab) + 
    ggtitle("Comparison of different methods based on composite metric") 

Output