2011-12-13 296 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

我明白這個主意,但我沒有成功意識到這一點。離羣點數爲字符串1或2或3,而不是每行。所以我不明白我怎樣才能將is.outlier列添加到我的數據框中。另外,is.outlier是對象類modlist ... – Tali 2011-12-15 07:07:57