R 如何使用美学为geom_hline()上色?

R 如何使用美学为geom_hline()上色?,r,ggplot2,R,Ggplot2,geom_hline似乎忽视了美学,是我遗漏了什么,还是这是一个bug df <- data.frame( "x"=rep(c(1,2,3),2), "y"=rep(c(1,2,3),2), "g"=rep(c(TRUE,FALSE),each=3) ) ggplot(df,aes(x=x,y=y)) + geom_point() + geom_hline(yintercept = 1.5,aes(colour=g)) + facet_w

geom_hline似乎忽视了美学,是我遗漏了什么,还是这是一个bug

df <- data.frame(
    "x"=rep(c(1,2,3),2),
    "y"=rep(c(1,2,3),2),
    "g"=rep(c(TRUE,FALSE),each=3)
)

ggplot(df,aes(x=x,y=y)) + 
    geom_point() +
    geom_hline(yintercept = 1.5,aes(colour=g)) +
    facet_wrap(~g)

yintercept
也必须位于
aes
内部,才能使
颜色映射正常工作

ggplot(df,aes(x=x,y=y)) + 
  geom_point() +
  geom_hline(aes(yintercept = 1.5, colour=g)) +
  facet_wrap(~g)

我不知道为什么
geom_hline
会这样工作。为了与其他几何图形保持一致,似乎
yintercept
应该独立于其他美学。例如,在这种情况下,
颜色
的美学效果与预期一致:

ggplot(df,aes(x=x,y=y)) + 
  geom_point() +
  geom_line(y=1, aes(colour=g)) +
  facet_wrap(~g)
更新:感谢@Anonymouscoward为我提供了
geom\u abline/vline/hline
的帮助,这说明这些geom无法识别
x
y
美学:

与大多数其他几何图形不同,这些几何图形不会从绘图默认值继承美学,因为它们不理解通常在绘图中设置的x和y美学


有关更多详细信息,请参阅帮助。

谢谢@eipi10我找不到原因,因此我在ggplot2 github repo上打开了一个问题:在
内?geom_abline
请参阅
详细信息
部分。它似乎是一个或另一个,而不是一进一出的
aes
,因为听起来它创建行的方式是唯一的。在
?geom_abline
中对参数
yintercept
的帮助说明:“控制线路位置的参数。如果设置了这些选项,
数据
映射
显示图例
将被覆盖。”这正是OP示例中发生的情况。
geom_h/v/abline
现在将在覆盖映射时发出警告。请参阅,并且正在考虑覆盖用户提供的数据的行为请参阅:
ggplot(df,aes(x=x,y=y)) + 
  geom_point() +
  geom_line(y=1, aes(colour=g)) +
  facet_wrap(~g)