使用子集时添加图例
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_line
和 geom_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)
我需要将一个变量和该变量的一个子集绘制到一个图表中,但我很难确定图例的位置。请参阅以下 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_line
和 geom_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)