2011-12-13 2 views
0

У меня есть еще один вопрос о geom_boxplot. Возможно ли построить график geom_jitter для выбросов? Как это я могу иметь выбросы в одном цвете и джиттера точек в другойКак не построить все точки geom_jitter?

aa <- c(rep("A1",5), rep("A2",3), rep("A3",4), rep("A4",9), rep("A5",3)) 
aa <- as.factor(aa) 
per <- runif(length(aa), min=0, max=100) 
per <- trunc(per) 
z <- data.frame(x=aa,y=per) 
z$ch <- NA 
z[z$x %in% c("A1","A2"), "ch"] <- "string1" 
z[z$x %in% c("A3"), "ch"] <- "string2" 
z[z$x %in% c("A4", "A5"), "ch"] <- "string3" 

z$ch <- as.factor(z$ch) 
z$x = with(z, factor(x, rev(levels(x)))) 
p <- ggplot(z, aes(x, y, fill = ch)) + 
geom_boxplot(size = 0.2, position = "dodge", outlier.colour = "red", outlier.shape = 16,  outlier.size = 2) + 
geom_jitter(size=1,position = "dodge") + 
opts(legend.position = "right") + 
scale_colour_hue("variable") + 
coord_flip() 
print(p) 

ответ

0

Добавить столбец is.outlier в наборе данных z (который TRUE тогда и только тогда, когда это значение является останец). Если вы хотите сделать что-то все, кроме выбросов, включают в себя аргумент данных с не-аномальное значение подмножества, например,

geom_jitter(some_stuff, data = subset(z, !is.outlier)) 

Делают разные вещи для выбросов и не-отклоняющихся значений, используйте is.outlier в своей эстетике, например, ,

geom_point(aes(size = is.outlier + 1)) 
+0

Я понимаю идею, но мне это не удалось реализовать. outlier points для строк 1 или 2 или 3, а не для каждой строки. Поэтому я не понимаю, как добавить столбец is.outlier в мой фрейм данных. Кроме того, is.outlier для класса объектов modlist ... – Tali

+0

Должен признаться, я не уверен, чего вы пытаетесь достичь. 'geom_jitter' добавляет дрожащие точки к сюжету. Они не являются выбросами. –

Смежные вопросы