如何不绘制geom_jitter的所有点?

时间:2011-12-13 16:58:09

标签: r ggplot2

我还有一个关于geom_boxplot的问题。 是否有可能不将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)

1 个答案:

答案 0 :(得分:0)

将列is.outlier添加到数据集z(当且仅当该值为异常值时为TRUE。如果你想对除异常值之外的所有事情做一些事情,包括一个带有非异常值子集的数据参数,例如,

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

对异常值和非异常值做不同的事情,在你的审美中使用is.outlier,例如,

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