【问题标题】:Add total or average to ggplot with color legend使用颜色图例将总数或平均值添加到 ggplot
【发布时间】:2013-05-09 02:31:22
【问题描述】:

我有一个带有颜色图例的图,并想在其中添加一个总/平均 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_ 的总颜色为黑色(在我的示例中有效),并在图例中具有“总计”标签(示例中缺少该标签)。新的“总计”标签应该是图例中的最后一个值。

在这个例子中,vs 的因子水平是 0 和 1。这在两个方面过度简化了我的情况:

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

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

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

【问题讨论】:

  • this 有用吗?
  • 感谢您的链接。您的类似问题的两个答案都涉及手动指定颜色和标签,这对我的应用程序来说太麻烦了。我将编辑我的问题以表明我有许多因子水平,并且我想为许多不同的数据集创建此图表(每个数据集具有不同的水平)。
  • 你在情节中尝试过子集和分组吗?

标签: r ggplot2 legend summary


【解决方案1】:

一种方法是完全覆盖另一个未使用的 geom,也就是 this related question 的答案:

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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    相关资源
    最近更新 更多