将图例添加到 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_A
和 result_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"))
。 (虽然无法对此进行测试,因为上面没有可重现的示例)
我有一个来自两个数据集的重叠密度图,是用 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_A
和 result_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"))
。 (虽然无法对此进行测试,因为上面没有可重现的示例)