R 如何向hline添加图例?

R 如何向hline添加图例?,r,ggplot2,legend,geom-hline,R,Ggplot2,Legend,Geom Hline,我想在hline plot中添加一个图例 我的子集的头看起来像这样 Site Date Al 1 Bo6 2014-10-07 152.1 2 Bo1 2014-10-07 157.3 3 Bo3 2014-10-07 207.1 4 Bo4 2014-10-07 184.3 5 Bo5 2014-10-07 23.2 13 Bo6 2014-10-14 96.8 我的代码如下: require(ggplot2) require(reshape2)

我想在hline plot中添加一个图例

我的子集的头看起来像这样

Site       Date    Al
1   Bo6 2014-10-07 152.1
2   Bo1 2014-10-07 157.3
3   Bo3 2014-10-07 207.1
4   Bo4 2014-10-07 184.3
5   Bo5 2014-10-07  23.2
13  Bo6 2014-10-14  96.8
我的代码如下:

require(ggplot2)
require(reshape2)
require(magrittr)
require(dplyr)
require(tidyr)
setwd("~/Documents/Results")
mydata <- read.csv("Metals sheet Rwosnb5.csv")
mydata <- read.csv("Metals sheet Rwosnb5.csv")
L <- subset(mydata, Site =="Bo1"| Site == "Bo2"| Site == "Bo3"| Site ==          "Bo4"| Site == "Bo5" | Site == "Bo6", select = c(Site,Date,Al))
L$Date <- as.Date(L$Date, "%d/%m/%Y")
I <- ggplot(data=L, aes(x=Date, y=Al, colour=Site)) +
  geom_point() + 
  labs(title = "Total Al in the Barlwyd and Bowydd in Pant-yr-afon    sites B4-B9
   2014-2015.", x = "Month 2014/2015",
   y = "Total concentration (mg/L)") +
  scale_y_continuous(limits = c(0, 500)) +
  scale_x_date(date_breaks = "1 month", date_labels = "%m")
I + geom_hline(aes(yintercept= 10),  linetype = 2, colour= 'red',   show.legend =TRUE) +
  geom_hline(aes(yintercept= 75.5), linetype = 2, colour= 'blue', show.legend = TRUE)
require(ggplot2)
要求(2)
需要(magrittr)
需要(dplyr)
需要(三年)
setwd(“~/Documents/Results”)

mydata您可以使用
线型
为水平线创建单独的图例,而不是将其添加到现有图例中

为此,我们可以将
linetype
移动到
aes
内部,同时仍映射到常量。我用你想要的标签作为常数。图例名称和使用的线型可在
scale\u linetype\u手册
中设置。我删除
show.legend=TRUE
以避免其他图例中的行。图例颜色在
override.aes中固定

I + geom_hline(aes(yintercept= 10, linetype = "NRW limit"), colour= 'red') +
    geom_hline(aes(yintercept= 75.5, linetype = "Geochemical atlas limit"), colour= 'blue') +
    scale_linetype_manual(name = "limit", values = c(2, 2), 
                      guide = guide_legend(override.aes = list(color = c("blue", "red"))))

请阅读。然后对其进行相应的编辑和改进。一篇好的帖子通常会提供最少的输入数据,所需的输出数据和代码会在一个新的/干净的R会话中尝试所有的复制粘贴运行。例如,您的示例无法运行,因为只有您获得了CSV文件,
库(ggplot2)
丢失等。您是否尝试了
显示指南
而不是
显示图例
?&我刚刚尝试过,收到错误消息“
show\u guide
已被弃用。请使用
show.legend
代替“谢谢你,太棒了!!多棒的R神童:-)很好,但是有没有办法让图例中的虚线变长?@hermantouthrot如果你想让方框变宽,这样你就可以看到更多的线,你可以改变“键”(图例框)的宽度。这可以通过
主题
@Puddlebunk中的“legend.key.width”参数来完成
是我选择线条外观的地方(“线型”)。您需要提供尽可能多的行值。在我的示例中,我选择了两条相同类型的线,这样所有的线看起来都一样;如果有三行,则在
值中需要三种线型。有关可以选择的行类型的信息,请参见。@user2017023有关设置多个图例顺序的信息,请参见
guide\u legend()
中的
order
参数。