使用 abline(lm()) 时无法添加 axis() 进行绘图,为什么?

I can't add axis() to plot when using abline(lm()), why?

我很挣扎,因为我只是想将我自己的 x 轴值和刻度线添加到也显示线性回归的图中。

似乎或者我添加了 abline 或者我添加了轴。我不能两者都做!

为什么?

示例数据:

df = data.frame(year = c(1901:2000), total = ceiling(runif(100, 2, 3000)))

此代码仅适用于 abline():

plot(df$year, df$total, xaxt='n')
abline(lm(df$total ~ df$year))
axis(1, at = seq(1,100, by = 10), labels = seq(1901, 2000, by = 10)) #this line does not work

此代码仅适用于 axis():

plot(df$total, xaxt='n')
abline(lm(df$total ~ df$year)) #this line does not work
axis(1, at = seq(1,100, by = 10), labels = seq(1901, 2000, by = 10))

有什么帮助吗? 谢谢

x 轴不一定从 1 到 100。单位由变量的比例定义。

在您的第一个示例中,x 轴实际上是从 1901 到 2000。因此您需要在该范围内定义 at,否则您的值会落在绘图之外并且不可见。简单地做:

plot(df$year, df$total, xaxt='n')
abline(lm(df$total ~ df$year))
axis(1, at = seq(1901, 2000, by = 10))

您的 axis 调用的第二个示例有效,因为您在 x 轴上绘制 index,它仅从 1 计数到 n 个观测值(在这种情况下为 100)。 abline 不可见,因为它不在该图的范围内。