首页 文章

连接意味着在带有线的箱线图上(ggplot2)

提问于
浏览
19

我有一个显示多个盒子的箱线图 . 我想连接每个盒子的平均值和一条线 . 箱形图默认不显示均值,而中间线仅表示中位数 . 我试过了

ggplot(data, aes(x=xData, y=yData, group=g)) 
    + geom_boxplot() 
    + stat_summary(fun.y=mean, geom="line")

这不起作用 .

有趣的是,干嘛

stat_summary(fun.y=mean, geom="point")

绘制每个框中的中间点 . 为什么“排队”不起作用?

这样的东西,但使用ggplot2,http://www.aliquote.org/articles/tech/RMB/c4_sols/plot45.png

1 回答

  • 29

    那是你在找什么?

    library(ggplot2)
    
    x <- factor(rep(1:10, 100))
    y <- rnorm(1000)
    df <- data.frame(x=x, y=y)
    
    ggplot(df, aes(x=x, y=y)) + 
    geom_boxplot() + 
    stat_summary(fun.y=mean, geom="line", aes(group=1))  + 
    stat_summary(fun.y=mean, geom="point")
    

    Update:

    关于设置组的一些澄清= 1:我认为我在Hadley Wickham的书“ggplot2: Elegant Graphics for Data Analysis”中找到了解释 . 在第51页他写道:

    不同层上的不同组 . 有时我们希望根据不同的聚合级别绘制摘要 . 不同的层可能具有不同的组美学,因此一些层显示单独的级别数据,而其他层显示更大的组的摘要 . 在前面的例子的基础上,假设我们想要根据所有男孩的年龄和身高,为刚刚创建的情节添加一条平滑线 . 如果我们使用相同的分组来表示我们用于线的平滑,我们得到图4.4中的第一个图 . p geom_smooth(aes(group = Subject),method =“lm”,se = F)这不是我们想要的;我们无意中为每个男孩添加了一条平滑的线条 . 这个新图层需要不同的组审美,group = 1,因此新行将基于所有数据,如图中的第二个图所示 . 修改后的图层如下所示:p geom_smooth(aes(group = 1),method =“lm”,size = 2,se = F)[...]在平滑图层中使用aes(group = 1)适合单个适合所有男孩的最佳线条 . “

相关问题