【问题标题】:Add legend when using a subset使用子集时添加图例
【发布时间】:2016-07-25 07:08:39
【问题描述】:

我需要将一个变量和该变量的一个子集绘制到一个图表中,并且我很难放置图例。请参阅以下 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,但没有让它发挥作用(如果这是要走的路,无论如何?)。

有什么建议吗?

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

【问题讨论】:

标签: r ggplot2 subset legend


【解决方案1】:

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

【讨论】:

  • 我刚刚意识到这不是我问题的答案,因为您建议的情节堆叠了密度图。因此,这是一个完全不同的图表。我将position = "dodge" 添加到geom_area 以获取我正在寻找的图表。谢谢你的想法。
  • @der_grund 正确,使用了错误的绘图功能,请参阅编辑。
猜你喜欢
  • 1970-01-01
  • 2018-02-23
  • 2021-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多