2017-06-02 71 views
1

如何根據兩列水平的組合來繪圖(此處爲:treatment,replicate)?繪圖:基於兩列水平組合的顏色

set.seed(0) 
x <- rep(1:10, 4) 
y <- sample(c(rep(1:10, 2)+rnorm(20)/5, rep(6:15, 2) + rnorm(20)/5)) 
treatment <- sample(gl(8, 5, 40, labels=letters[1:8])) 
replicate <- sample(gl(8, 5, 40)) 
d <- data.frame(x=x, y=y, treatment=treatment, replicate=replicate) 

圖:顏色基於單柱水平

ggplot(d, aes(x=x, y=y, colour=treatment)) + geom_point() 

output

ggplot(d, aes(x=x, y=y, colour=replicate)) + geom_point() 

output

兩個列電平的組合將是a-1, a-2, a-3, ... h-6, h-7, h-8

+2

什麼只是連接兩個變量? –

+2

W/8x8,會有64種可能的組合?那是你要的嗎? – gung

+0

@gung是的,確切地說 – Prradep

回答

3

64種顏色將是不可解釋的。怎麼樣,而不是點標籤:

ggplot(d, aes(x=x, y=y, colour=treatment)) + 
    geom_text(aes(label=paste0(treatment, replicate)), size=3, show.legend=FALSE) + 
    theme_classic() 

enter image description here

或者,如果你想當場不同處理的模式的差異,小面也許會幫助:

ggplot(d, aes(x=x, y=y, colour=treatment)) + 
    geom_text(aes(label=paste0(treatment, replicate)), size=3, show.legend=FALSE) + 
    facet_wrap(~ treatment, ncol=4) + 
    scale_x_continuous(expand=c(0,0.7)) + 
    theme_bw() + theme(panel.grid=element_blank()) 

enter image description here

但是,如果你真的想要一大堆顏色......

ggplot(d, aes(x=x, y=y, colour=interaction(treatment,replicate,sep="-",lex.order=TRUE))) + 
    geom_point() + 
    labs(colour="Treatment-Replicate") + 
    theme_classic() 

(如果你想在圖例中列出所有潛在treatment-replicate組合,無論它們是否是存在於數據中,再加入+ scale_colour_discrete(drop=FALSE)的情節代碼。)

enter image description here

+0

謝謝@ eipi10爲你的教育性的例子。我正在尋找當前場景中的最後一個例子,並且使用其他兩種繪圖類型會非常有趣。 – Prradep