如何在geom_boxplot中做一些修改?

时间:2011-12-12 09:07:28

标签: r boxplot

我想对geom_boxplot进行一些修改:

  1. 颠倒Y轴的顺序(顶部为A1,底部为A4)。
  2. 是否可以在图表上绘制我的图例,而不是在图表旁边。
  3. 以下是一个例子:

    aa <- c(rep("A1",5), rep("A2",3), rep("A3",4), rep("A4",9))
    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"), "ch"] <- "string3"
    
    z$ch <- as.factor(z$ch)
    
    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) + opts(legend.position = "right") + 
    scale_colour_hue("variable") +
    coord_flip()
    print(p)
    

1 个答案:

答案 0 :(得分:2)

可以通过重新排序因子的级别(z $ x)来反转y轴上标签的顺序:

z$x = with(z, factor(x, rev(levels(x))))

要在图表中获取图例,您可以使用legend.position选项。诀窍是当你把它设置为例如传说的“顶部”或“底部”位于情节之外。使用两个数字的矢量时,它会将图例放在图中的该位置。在代码中:

p + opts(legend.position = c(0.85,0.85), 
         legend.background = theme_rect("white"))

这导致了以下情节,我认为这就是你想要的:

enter image description here

注意添加legend.background以绘制图例周围的填充矩形。此外,我自己并不喜欢在图中使用图例,因为它可能会模糊数据。但是,当然,你可以决定:)。