R-ggplot2:geom_abline 不随scale_y_reverse 翻转

dni*_*idz 5 r ggplot2

我正在 ggplot2 中使用统计趋势线绘制湖泊数据,geom_abline()并使用趋势函数计算的斜率和截距。我绘制的参数之一传统上用反向 y 轴显示(它是 Secchi 深度,因此反向 y 轴模仿向下看水并在图表下方显示更深的深度)。

添加scale_y_reverse()到绘图中也不会反转 abline。我已经用一些 if-then-else 来解决这个问题,以便在轴反转时传入 -slope 和 -intercept,但这感觉像是一个笨拙的黑客。反转y轴应该反转基于y轴的所有内容,包括ablines、hlines等以及数据。有人有更优雅的解决方案吗?

这是使用 mtcars 数据集的一些可重现代码。当比例反转时,蓝线仍然以正斜率和截距绘制,因此它不再出现在图表上。我可以用 -slope 和 -intercept 画一条红线。

data(mtcars)

p<-ggplot(data=mtcars,aes(x=mpg,y=disp))+
  geom_point()+
  geom_abline(slope=12,intercept=100,color="blue")

p

p+scale_y_reverse()

p+scale_y_reverse()+
  geom_abline(slope=-12,intercept=-100,color="red")
Run Code Online (Sandbox Code Playgroud)

(我也很感激您是否认为这是一个值得发布给 ggplot2 开发人员的错误,或者您是否认为现有行为是在反向轴上绘制的方式 - 以及为什么。)