我想用多个系列在ggplot上标记一条水平线,而无需将该线与一个系列相关联。 R ggplot2: Labelling a horizontal line on the y axis with a numeric value询问geom_text解决的单系列情况。但是,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))

r - R ggplot2:在不将标签与序列相关联的情况下标记水平线-LMLPHP

如何在不将标签与系列之一相关联的情况下为该行添加标签?

最佳答案

这就是您的想法吗?

r - R ggplot2:在不将标签与序列相关联的情况下标记水平线-LMLPHP

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=...获得特定于图层的数据集。

10-08 00:29