R 在日志ggplot2中添加常规abline

R 在日志ggplot2中添加常规abline,r,ggplot2,R,Ggplot2,我试图在ggplot2中添加一行分隔部分数据。遵循这一思路: 我试过了 d = data.frame(x = 100*rlnorm(100), y = 100*rlnorm(100)) ggplot(d, aes(x, y)) + geom_point() + geom_abline(intercept = 100, slope = -1, col='red') + scale_y_log10() + scale_x_log10() 但它没有画出这条线。请注意,旧的绘图方法得到了正

我试图在ggplot2中添加一行分隔部分数据。遵循这一思路:

我试过了

d = data.frame(x = 100*rlnorm(100), y = 100*rlnorm(100))
ggplot(d, aes(x, y)) + geom_point() + 
  geom_abline(intercept = 100, slope = -1, col='red') +
  scale_y_log10() + scale_x_log10()
但它没有画出这条线。请注意,旧的绘图方法得到了正确的结果:

plot(d$x, d$y, log='xy')
abline(a = 100, b=-1, col='red', untf=TRUE)

这可能不是最优雅的解决方案,但我通常在将预测添加到绘图时为预测定义一个单独的数据框。我知道在很多方面添加模型规范作为绘图的一部分会更快,但我真的很喜欢将其作为单独对象的灵活性。在这种情况下,我想到的是:

d = data.frame(x = 100*rlnorm(100), y = 100*rlnorm(100))

p = ggplot(d, aes(x,y)) + geom_point() + scale_x_log10() + scale_y_log10()

pred.func = function(x){
  100 - x
}

new.dat = data.frame(x = seq(from = 5, to = 90))
new.dat$pred = pred.func(new.dat$x)

p + geom_line(aes(x = x, y = pred), data = new.dat, col = "red")

我实际上认为
geom_abline
abline
没有相同的功能(即
untr
参数),只能在当前坐标上绘制直线,因此这可能是最好的方法。