2016-03-19 19 views
0

Şartlı olarak renk kod kutumu denemeye çalışıyorum ama sürekli olarak çalışmıyor. Birisinin sorunun ne olduğunu belirleyebileceğini umuyorum. Yardım edebilecek olursam ggplot kullanmamayı umuyordum, R için oldukça yeniyim ve bildiklerime sadık kalmak istiyorum (şimdilik).R - Kutu Çizim Koşullu Renkler Çalışmıyor

Esasen, 9 kutudan 2'sinin farklı renkler olması gereken bir dizi kutu çiziyorum. Bir renk kalıbı belirleyemem çünkü iki kutunun konumu her grafik için x ekseninde değişiyor. 0, 2 veya 4 değerleriyle "Control" etiketli bir sütunum var. Control = 0 değerinin grey80 olması, Control = 4'ün grey40 olması ve Control = 2'nin beyaz olması için her şeyi istiyorum. Boxplot olarak

#BoxPlot with Conditional Coloring, ifelse statement 
boxplot(Y~X, ylab="y", 
xlab="x", 
col=ifelse(Control>=3, "gray40", ifelse(Control<=1, "gray80","white"))) 

#Colors 
colors <- rep("white", length(Control)) 
colors[Control=4] <- "gray40" 
colors[Control=0] <- "gray80" 

#BoxPlot with Conditional Coloring, "Colors" 
boxplot(Y~X, ylab="y", 
xlab="x", 
col=colors) 

ekli, sadece ilk iki kutu renkli edilmelidir kimse yanlış ne yapıyorum söyleyebilir. Ben iki şekilde bunu gerçekleştirmek çalıştı? 1

+0

ihtimali var, bir [tekrarlanabilir örnek] kamçılamak olabilir (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r- tekrarlanabilir-örnek)? O zamana kadar belki de ifelse (Kontrol == 0, "gray80", ifelse (Kontrol == 2, "white", "grey40")) 'ı deneyebilirsiniz. –

cevap

0

Bunu yapmanın iki yolu vardır. Eğer sizin için işe yaramıyorsa, yeniden üretilebilir bir örnek gitmek için bir yol olacaktır (asıl sorunuzun altındaki yorumuma bakın).

xy <- data.frame(setup = rep(c(0, 2, 4), 50), value = rnorm(150)) 

boxplot(value ~ setup, data = xy) 

boxplot(value ~ setup, data = xy, col = ifelse(xy$setup == 0, "gray80", ifelse(xy$setup == 2, "white", "gray40"))) 

library(ggplot2) 

xy$setup <- as.factor(xy$setup) 


ggplot(xy, aes(y = value, fill = setup, x = setup)) + 
    theme_bw() + 
    geom_boxplot() + 
    # order of colors is determined by the order of levels of xy$setup 
    scale_fill_manual(values = c("gray80", "white", "gray40")) 

enter image description here