为什么 geom_abline 不尊重 scales_x_reverse?
Why geom_abline does not honor scales_x_reverse?
与 scale_x_reverse
结合使用时,我一直在努力使用 geom_abline
命令。
例如,以下代码创建了一个由 10 个点组成的图。我可以使用 scale_x_reverse
反转 x 轴,但是当我使用 geom_abline
添加身份时,红色身份线不会反转。
ggplot(data.frame(x=seq(1,10),y=seq(1,10))) +
geom_point(aes(x=x,y=y)) +
geom_abline(color="red") +
scale_x_reverse(limits=c(10,-10)) +
scale_y_continuous(limits=c(-10,10)) +
ggtitle("I would expect the red line to be on top of the points")
似乎 geom_abline
绘制了一条 intercept=0, slope=1
的线,但不支持比例变换。
作为一种解决方法,我知道我可以强制斜坡做我想做的事:
ggplot(data.frame(x=seq(1,10),y=seq(1,10))) +
geom_point(aes(x=x,y=y)) +
geom_abline(intercept=0, slope=-1, color="red") +
scale_x_reverse(limits=c(10,-10)) +
scale_y_continuous(limits=c(-10,10)) +
ggtitle("I would expect the red line to be on top of the points")
我发现这种 geom_abline
行为令人困惑,我不明白为什么要这样实施。鉴于ggplot的良好设计,我相信一定有一个很好的逻辑原因,但我一直无法理解。
谁能给我解释一下吗?
所以答案是这只是一个错误。它与geom_segment
中的一个problem有关。当在 aes
内指定美学时它起作用,但在其他情况下不起作用。
ggplot(data.frame(x=seq(1,10),y=seq(1,10))) +
geom_point(aes(x=x,y=y)) +
scale_x_reverse() +
geom_segment(x = -10, xend=10, y=-10, yend=10, color='blue') +
geom_segment(data = data.frame(x = -10, xend=10, y=-10, yend=10),
aes(x=x, y=y, xend=xend, yend=yend),
color='red')
但是,将 geom_abline
、geom_hline
、geom_vline
与比例一起使用似乎存在更普遍的问题。有关详细信息,请参阅 here。
与 scale_x_reverse
结合使用时,我一直在努力使用 geom_abline
命令。
例如,以下代码创建了一个由 10 个点组成的图。我可以使用 scale_x_reverse
反转 x 轴,但是当我使用 geom_abline
添加身份时,红色身份线不会反转。
ggplot(data.frame(x=seq(1,10),y=seq(1,10))) +
geom_point(aes(x=x,y=y)) +
geom_abline(color="red") +
scale_x_reverse(limits=c(10,-10)) +
scale_y_continuous(limits=c(-10,10)) +
ggtitle("I would expect the red line to be on top of the points")
似乎 geom_abline
绘制了一条 intercept=0, slope=1
的线,但不支持比例变换。
作为一种解决方法,我知道我可以强制斜坡做我想做的事:
ggplot(data.frame(x=seq(1,10),y=seq(1,10))) +
geom_point(aes(x=x,y=y)) +
geom_abline(intercept=0, slope=-1, color="red") +
scale_x_reverse(limits=c(10,-10)) +
scale_y_continuous(limits=c(-10,10)) +
ggtitle("I would expect the red line to be on top of the points")
我发现这种 geom_abline
行为令人困惑,我不明白为什么要这样实施。鉴于ggplot的良好设计,我相信一定有一个很好的逻辑原因,但我一直无法理解。
谁能给我解释一下吗?
所以答案是这只是一个错误。它与geom_segment
中的一个problem有关。当在 aes
内指定美学时它起作用,但在其他情况下不起作用。
ggplot(data.frame(x=seq(1,10),y=seq(1,10))) +
geom_point(aes(x=x,y=y)) +
scale_x_reverse() +
geom_segment(x = -10, xend=10, y=-10, yend=10, color='blue') +
geom_segment(data = data.frame(x = -10, xend=10, y=-10, yend=10),
aes(x=x, y=y, xend=xend, yend=yend),
color='red')
但是,将 geom_abline
、geom_hline
、geom_vline
与比例一起使用似乎存在更普遍的问题。有关详细信息,请参阅 here。