0

我有一个 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")

在此处输入图像描述

所以我只需要在“治疗”下方有一个额外的图例,上面写着“BESE PLOTS LOCATION”并且与灰线有关

我一直在寻找解决方案,我尝试过使用"scale_linetype_manual"and "guides",但我没有到达那里

4

1 回答 1

0

由于您没有提供可重现的示例,因此我使用了 mtcars 数据集中的数据。此外,我稍微修改了这个类似的答案。由于您已经指定了颜色并且填充因子在这里不起作用,您可以使用线型作为第二个参数,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")
于 2017-06-26T08:53:46.053 回答