ggplot2 - 向多层添加手动图例
ggplot2 - add manual legend to multiple layers
我有一个 ggplot,其中我使用 geom_points
的颜色作为我的一个列(我的治疗)的函数,然后我使用 scale_color_manual
选择颜色。
我自动得到我的图例
问题是我需要绘制一些与实验设置有关的水平线,我正在用 geom_vline
做这些,但我不知道如何手动添加单独的图例这与我已有的并没有混淆,并且说明了这些行是什么。
我有以下代码
ggplot(dcons.summary, aes(x = meters, y = ymean, color = treatment, shape = treatment)) +
geom_point(size = 4) +
geom_errorbar(aes(ymin = ymin, ymax = ymax)) +
scale_color_manual(values=c("navy","seagreen3"))+
theme_classic() +
geom_vline(xintercept = c(0.23,3.23, 6.23,9.23), color= "bisque3", size=0.4) +
scale_x_continuous(limits = c(-5, 25)) +
labs(title= "Sediment erosion", subtitle= "-5 -> 25 meters; standard deviation; consistent measurements BESE & Control", x= "distance (meters)", y="erosion (cm)", color="Treatment", shape="Treatment")
所以我只需要在 "treatment" 下方添加一个额外的图例,上面写着 "BESE PLOTS LOCATION" 并且与灰线
相关
我一直在寻找解决方案,我尝试使用 "scale_linetype_manual"
和 "guides"
,但我没有找到
由于您没有提供可重现的示例,我使用了来自 mtcars 数据集的数据。
另外我稍微修改了this similar answer。由于您已经指定了颜色,此外填充因子在这里不起作用,您可以将线型用作 aes
中的第二个参数,这可以在图例中显示:
xid <- data.frame(xintercept = c(15,20,30), lty=factor(1))
mtcars %>%
ggplot(aes(mpg ,cyl, col=factor(gear))) +
geom_point() +
geom_vline(data=xid, aes(xintercept=xintercept, lty=lty) , col = "red", size=0.4) +
scale_linetype_manual(values = 1, name="",label="BESE PLOTS LOCATION")
或者没有第二个data.frame:
ggplot() +
geom_point(data = mtcars,aes(mpg ,cyl, col=factor(gear))) +
geom_vline(aes(xintercept=c(15,20,30), lty=factor(1) ), col = "red", size=0.4)+
scale_linetype_manual(values = 1, name="",label="BESE PLOTS LOCATION")
我有一个 ggplot,其中我使用 geom_points
的颜色作为我的一个列(我的治疗)的函数,然后我使用 scale_color_manual
选择颜色。
我自动得到我的图例
问题是我需要绘制一些与实验设置有关的水平线,我正在用 geom_vline
做这些,但我不知道如何手动添加单独的图例这与我已有的并没有混淆,并且说明了这些行是什么。
我有以下代码
ggplot(dcons.summary, aes(x = meters, y = ymean, color = treatment, shape = treatment)) +
geom_point(size = 4) +
geom_errorbar(aes(ymin = ymin, ymax = ymax)) +
scale_color_manual(values=c("navy","seagreen3"))+
theme_classic() +
geom_vline(xintercept = c(0.23,3.23, 6.23,9.23), color= "bisque3", size=0.4) +
scale_x_continuous(limits = c(-5, 25)) +
labs(title= "Sediment erosion", subtitle= "-5 -> 25 meters; standard deviation; consistent measurements BESE & Control", x= "distance (meters)", y="erosion (cm)", color="Treatment", shape="Treatment")
所以我只需要在 "treatment" 下方添加一个额外的图例,上面写着 "BESE PLOTS LOCATION" 并且与灰线
相关我一直在寻找解决方案,我尝试使用 "scale_linetype_manual"
和 "guides"
,但我没有找到
由于您没有提供可重现的示例,我使用了来自 mtcars 数据集的数据。
另外我稍微修改了this similar answer。由于您已经指定了颜色,此外填充因子在这里不起作用,您可以将线型用作 aes
中的第二个参数,这可以在图例中显示:
xid <- data.frame(xintercept = c(15,20,30), lty=factor(1))
mtcars %>%
ggplot(aes(mpg ,cyl, col=factor(gear))) +
geom_point() +
geom_vline(data=xid, aes(xintercept=xintercept, lty=lty) , col = "red", size=0.4) +
scale_linetype_manual(values = 1, name="",label="BESE PLOTS LOCATION")
或者没有第二个data.frame:
ggplot() +
geom_point(data = mtcars,aes(mpg ,cyl, col=factor(gear))) +
geom_vline(aes(xintercept=c(15,20,30), lty=factor(1) ), col = "red", size=0.4)+
scale_linetype_manual(values = 1, name="",label="BESE PLOTS LOCATION")