代码之家  ›  专栏  ›  技术社区  ›  Xavier Prudent

使用ggplot2根据箱线图的平均值对其进行着色

  •  1
  • Xavier Prudent  · 技术社区  · 8 年前

    让我们考虑一个具有ggplot的箱线图:

     p <- ggplot(mtcars, aes(factor(cyl), mpg)) + geom_boxplot()
    

    我希望用一种取决于mpg平均值的纯色填充框,例如从蓝色到红色。我已经使用了各种分组和填充参数,但使用“mean(mpg)”总是返回全局平均值。

    2 回复  |  直到 8 年前
        1
  •  4
  •   Sandipan Dey    8 年前

    尝试这样做(用每个气缸组的四舍五入平均值填充框):

    mtcars$mean <- as.factor(round(ave(mtcars$mpg, as.factor(mtcars$cyl), FUN=mean)))
    ggplot(mtcars, aes(factor(cyl), mpg, fill=mean)) + geom_boxplot()
    

    enter image description here

        2
  •  3
  •   Haboryme    8 年前

    您可以创建一个新列,然后用于填充。

    library(dplyr)
    library(ggplot2)
    mtcars%>%
      group_by(cyl)%>%
      mutate(mean_cyl=mean(mpg))%>%
      ggplot(aes(factor(cyl),mpg))+geom_boxplot(aes(fill=mean_cyl))+scale_fill_gradient(low="blue",high = "red")