使用子集时添加图例

Add legend when using a subset

我需要将一个变量和该变量的一个子集绘制到一个图表中,但我很难确定图例的位置。请参阅以下 MWE:

library(ggplot2)

ggplot(data = cars, aes(x = speed)) +
  geom_line(stat = "density", colour = "red", size = 1) +
  geom_area(stat = "density", fill = "red", alpha = 0.3) +
  geom_line(data = subset(cars, dist > 50), stat = "density", colour = "blue", size = 1) +
  geom_area(data = subset(cars, dist > 50), stat = "density", fill = "blue", alpha = 0.3)

请注意,在美学中包含 fill = dist > 50 不是一个选项,因为这会将数据分成两个不同的部分。但是第一个 geom_linegeom_area 不仅必须包括带有 dist <= 0 的值,还必须包括数据中的所有值。

因此我在 geom 中手动指定颜色。但是我现在如何添加图例?我宁愿只包含两个 geom_line

我试过 scale_color_manual 但没有让它工作(如果这是要走的路,无论如何?)。

有什么建议吗?

编辑:我更改了代码以显示一个有效的最小示例。

最好在ggplot之外准备数据,看例子:

# data prep
plotDat <- rbind(
  data.frame(Group = "Full Data", cars),
  data.frame(Group = "Subset Data", cars[cars$speed < 15, ]))

library(ggplot2)
ggplot(plotDat, aes(x = speed, col = Group, fill = Group)) +
  geom_density(alpha = 0.3)