R ggplot2:标记水平线而不将标签与系列相关联

时间:2015-09-06 16:31:56

标签: r ggplot2

我想在带有多个系列的ggplot 上标记一条水平线,而不将该线与一系列相关联。 R ggplot2: Labelling a horizontal line on the y axis with a numeric value询问geom_text解决的单系列案例。但是,color通过颜色和图例将标签与其中一个系列相关联。

考虑该问题的相同示例,使用另一个library(ggplot2) df <- data.frame(y=1:10, x=1:10, col=c("a", "b")) # Added col h <- 7.1 plot1 <- ggplot(df, aes(x=x, y=y, color=col)) + geom_point() plot2 <- plot1 + geom_hline(aes(yintercept=h)) # Applying top answer https://stackoverflow.com/a/12876602/1840471 plot2 + geom_text(aes(0, h, label=h, vjust=-1)) 列:

annotate

Result

如何在不将标签与其中一个系列相关联的情况下标记线条?

2 个答案:

答案 0 :(得分:5)

这是你的想法吗?

library(ggplot2)
df <- data.frame(y=1:10, x=1:10, col=c("a", "b"))  # Added col
h <- 7.1
ggplot(df, aes(x=x,y=y)) + 
  geom_point(aes(color=col)) +
  geom_hline(yintercept=h) +
  geom_text(data=data.frame(x=0,y=h), aes(x, y), label=h, vjust=-1)

首先,您可以将颜色映射设置为点图层的局部颜色。其次,您不必将所有美学都放入aes(...)的调用中 - 只需要将那些美学映射到数据集的列。三,在调用特定geom _ *时,您可以使用data=...获取特定于图层的数据集。

答案 1 :(得分:1)

您可以改为使用plot2 + annotate(geom="text", label=h, x=1, y=h, vjust=-1)

x

Result

编辑:删除了需要geom_text的缺点,因为(?<=adi</h4>\s*<small>)[^<]+ 也是如此。