3

我有一个带有颜色图例的图,并想为其添加一个总/平均geom_...系列。

例如:

d <- ggplot(data=mtcars, aes(x=cyl, y=mpg, color=factor(vs))) + geom_point()
d + stat_summary(fun.y = "mean", fun.ymin = "mean", fun.ymax = "mean", colour = "black")

示例图

我希望总geom_颜色为黑色(在我的示例中有效),并且在图例中具有“total”标签(示例中缺少该标签)。新的“总计”标签应该是图例中的最后一个值。

在此示例中,vs 的因子水平为 0 和 1。这在两个方面过度简化了我的案例:

  1. 我有很多因素水平,所以我正在寻找一种不需要手动操作图例中的颜色/标签的解决方案。
  2. “总计”在这个数据集中自然排在最后(因为它在 0 和 1 之后,按字母顺序排列),但在我的数据集中,它位于中间的某个位置。那么这些因素可能需要重新排序?为了这个示例数据集的目的,假设应该首先列出“总数”,以显示如何重新排序标签。

最后,有时我认为stat_summary无法正确计算平均值,因此我希望能够灵活地通过第二个数据集手动计算平均值或总数。例如:

d + geom_point(data = as.data.table(mtcars)[, list(avg = mean(mpg)), by = "cyl"] ... )
4

1 回答 1

4

一种方法是完全覆盖另一个未使用的 geom,这也是这个相关问题的答案:

d <- ggplot(data=mtcars, aes(x=cyl, y=mpg, color=factor(vs))) + geom_point()
d + stat_summary(fun.y = "mean", fun.ymin = "mean", fun.ymax = "mean", 
                 colour = "black", aes(shape="total"), geom="point") +
    guides(colour=guide_legend(order=1), shape=guide_legend(title=NULL, order=2))

结果图

于 2013-12-13T21:14:49.003 回答