使用子集时添加图例

时间:2016-07-25 07:08:40

标签: r ggplot2 subset legend

我需要将变量和该变量的一个子集绘制成一个图形,并且我很难处理图例的位置。请参阅以下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)

enter image description here

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

因此我在geom&#39}中手动指定颜色。但是我现在如何添加一个传奇?我宁愿只包括两个geom_line

我尝试使用scale_color_manual,但没有将它付诸实践(如果这是要走的路,无论如何?)。

有什么建议吗?

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

1 个答案:

答案 0 :(得分:2)

最好在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)

enter image description here