2016-10-13 25 views
5

ı Aşağıdaki veri çerçevesini var diyelim:Renk uç değerleri çok sayıda faktör

p<- ggplot(data = df, aes(x = factor(delta), y = value)) + 
geom_boxplot(aes(fill=factor(metric))) 

çıkışı:

Amacım birçok faktörler ile bir Boxplot yapmaktır
library(ggplot2) 

set.seed(101) 
n=10 
df<- data.frame(delta=rep(rep(c(0.1,0.2,0.3),each=3),n), metric=rep(rep(c('P','R','C'),3),n),value=rnorm(9*n, 0.0, 1.0)) 

Şimdiye kadar çok iyi, ama eğer yaparsam:

p+ geom_point(aes(color = factor(metric))) 

alıyorum: Ben ne yaptığını bilmiyorum

enter image description here

. Amacım, here bittiğinde aykırı renklendirmek. this solution'un kutuların iç rengini beyaz olarak değiştirdiğini ve kenarlığın farklı renklere ayarlandığını unutmayın. Ayırıcıları bu renkleri devralırken kutuların aynı rengini korumak istiyorum. Aykırıların ilgili kutulardan aynı renkleri nasıl aldıklarını bilmek istiyorum.

+0

ekleyebilir '+ facet_wrap (~ faktör) (metrik)' ama bu size – Mateusz1981

cevap

3

sadece uç değerleri rengini değiştirmek istiyor musunuz? Eğer öyleyse, iki kez kutu çizerek kolayca yapabilirsiniz.

p <- ggplot(data = df, aes(x = factor(delta), y = value)) + 
    geom_boxplot(aes(colour=factor(metric))) + 
    geom_boxplot(aes(fill=factor(metric)), outlier.colour = NA) 
             # outlier.shape = 21 # if you want a boarder 

enter image description here

[REDAKTE]
colss <- c(P="firebrick3",R="skyblue", C="mediumseagreen") 
p + scale_colour_manual(values = colss) + # outliers colours 
    scale_fill_manual(values = colss)  # boxes colours 

# the development version (2.1.0.9001)'s geom_boxplot() has an argument outlier.fill, 
# so I guess under code would return the similar output in the near future. 
p2 <- ggplot(data = df, aes(x = factor(delta), y = value)) + 
    geom_boxplot(aes(fill=factor(metric)), outlier.shape = 21, outlier.colour = NA) 
+0

tatmin eğer emin değilim budur ben aradığımı . Ama ya her biri için kendi renkleriimi ayarlamak istersem. Ben colss <- c (P = "firebrick3", R = "skyblue", C = "mediumseagreen") 'yi denedim ve sonra' p + scale_fill_manual (values ​​= colss) 'yapıp çalışmaz. – Nestorghh

+0

@Nestorghh; 1 'geom_boxplot() 'aes (aes (color) ile aykırı çizer ve ikincisi aes (fill) ile kutuları çizer (ve ilk kutuların üzerini kaplar). Bu nedenle, bu yöntemin, kutuların ve aykırı değerlerin renklerini değiştirmek için hem "scale_fill_manual" hem de "scale_colour_manual" gerekir. – cuttlefish44

+0

Teşekkürler! Şimdi çalışıyor. – Nestorghh

0

Belki bu:

ggplot(data = df, aes(x = as.factor(delta), y = value,fill=as.factor(metric))) + 
    geom_boxplot(outlier.size = 1)+ geom_point(pch = 21,position=position_jitterdodge(jitter.width=0)) 

enter image description here

İlgili konular