如何在 hline 中添加图例?
Posted
技术标签:
【中文标题】如何在 hline 中添加图例?【英文标题】:How to add a legend to hline? 【发布时间】:2016-12-31 09:19:45 【问题描述】:我想为线图添加一个图例。
我的子集的头部看起来像这样
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)
由于某种原因,图例不起作用 - 图例中有六个站点,它们之间有一条线。理想情况下,我想要一个标题 = 限制的图例 标签 1 (10) = NRW 限制和标签 2 (75.5) = 地球化学图集限制。
【问题讨论】:
请阅读how to provide minimal reproducible examples in R。然后相应地编辑和改进它。一篇好的帖子通常会提供最少的输入数据、所需的输出数据和代码尝试——所有这些都可以在新的/干净的 R 会话中复制粘贴运行。例如。你的例子不能作为没有人运行,除非你有 CSV 文件,library(ggplot2)
丢失等等。
你试过show_guide
而不是show.legend
吗? ***.com/questions/17092894/… & ***.com/questions/17092894/…
我刚刚尝试过,我收到错误消息“show_guide
已被弃用。请改用show.legend
”
【参考方案1】:
您可以使用linetype
美学为水平线制作单独的图例,而不是将它们添加到现有图例中。
为此,我们可以将linetype
移动到aes
中,同时仍然映射到一个常量。我用你想要的标签作为常数。图例名称和使用的线型可以在scale_linetype_manual
中设置。我删除了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 神童 :-) 很好,但是有没有办法让图例中的虚线更长? @HermanToothrot 如果您希望框更宽以便可以看到更多线条,您可以更改“键”(图例框)的宽度。这可以通过theme
中的“legend.key.width”参数来完成。
@Puddlebunk values
是我选择线条的外观(“线型”)的地方。您需要提供与行数一样多的值。我在示例中选择了两个相同类型的行,因此所有行看起来都一样;如果您有三行,则在values
中需要三种线型。有关您可以选择的线路类型的信息,请参阅here。
@user2017023 请参阅guide_legend()
中的order
参数以设置多个图例的顺序。以上是关于如何在 hline 中添加图例?的主要内容,如果未能解决你的问题,请参考以下文章
如何在同一个散点图上使用 geom_vline() 和 geom_hline 避免图例中的交叉效应?
使用循环在构面中创建多个 geom_hline 对象时,如何有效地创建手动图例?