将图例添加到 ggplot 中的叠加密度图

adding legend to overlaying density plot in ggplot

我有一个来自两个数据集的重叠密度图,是用 ggplot2 创建的。

  g <- ggplot(data = result_A,
              aes(x = log(cap_universal))) +
    geom_density(fill = "lightblue") +
    geom_density(data = result_B,
                 fill = "purple",
                 alpha = 0.25) +
    xlab("Complete Automation Probability") +
    ylab("Density")

我得到了我想要的,情节是这样的:

可是,我试了很多方法,还是不能给这个剧情加上传说。没有报错信息,就是图例不显示。

感谢您的帮助。

将您的数据集 result_Aresult_B 合并到一个数据集中,其中这些差异被指定为某个因素,例如"thing":

result_A$thing <- "A"
result_B$thing <- "B"
result_AB <- rbind(result_A, result_B)

然后,不要通过单独调用 geom_density 来调用两个数据集,而是使用 fill = thing 指定一次并手动指定颜色和 alphas,例如:

ggplot(data = result_AB, aes(x = log(cap_universal))) + 
  geom_density(aes(fill = thing,
                   alpha = thing)) +
  scale_fill_manual(values = c("light blue", "purple")) +
  scale_alpha_manual(values = c(1, 0.25)) +
  # assuming here that the "result_A" data will plot first as "A" should
  # order before "B" in factors, though can't test w/out yr data
  xlab("Complete Automation Probability") +
  ylab("Density")

这应该会产生一个图例,显示您的因素 "A" 和 "B" 是什么颜色,我想这就是您所追求的。

这更符合ggplot2的理念。但是,如果您将两个 fill 调用都包装在 aes 中,它也可能会起作用,例如geom_density(aes(fill = "lightblue"))。 (虽然无法对此进行测试,因为上面没有可重现的示例)