0

如何为已添加到绘图中的对象添加图例stat_summary

这是一个例子:

ToothGrowth$dose <- as.factor(ToothGrowth$dose)
p <- ggplot(ToothGrowth, aes(x=dose, y=len)) + 
    geom_violin(trim=FALSE)
data_summary <- function(x) {
    m <- mean(x)
    ymin <- m-sd(x)
    ymax <- m+sd(x)
    return(c(y=m,ymin=ymin,ymax=ymax))
}
p + stat_summary(fun.data=data_summary)

### Code from http://www.sthda.com/english/wiki/ggplot2-violin-plot-quick-start-guide-r-software-and-data-visualization

在此处输入图像描述

我想添加一个描述性图例,解释每个小提琴图中心的线和点代表什么。

根据下面的相关主题,我的印象是这可以通过定义aes(shape="")instat_summary然后添加来实现scale_shape_manual("", values=c("?"))。但我没有任何成功。

有关的。stat_summary 的 ggplot2 图例

4

1 回答 1

1

听起来您已经了解了它的工作原理,将常量映射到某种美学,然后使用scale_*_manual()它来清理图例。

scale_shape_manual()我认为删除图例名称,并通过更改添加第二个框到图例中limits。我用过c("Mean", "1 SD"),但这些可以是你想要的任何东西。

所需形状的数量由图例框的数量决定,所以我给了两个values,使用NA第二个,因为图例中的第二个框应该是一条没有点的线。

最后,我使用override.aes()inguide_legend()从第一个框中删除该行。

p + stat_summary(fun.data=data_summary, aes(shape = "Mean")) +
     scale_shape_manual(name = NULL, 
                        limits = c("Mean", "1 SD"),
                        values = c(19, NA),
                        guide = guide_legend(override.aes = list(linetype = c(0, 1))))

在此处输入图像描述

于 2018-10-10T16:42:07.183 回答