使用 abline 向散点图中的每组点添加线性回归线时出现编码错误

coding error when using abline to add linear regression lines to each set of points in a scatterplot

我需要一些帮助:

我有一个名为 "Control" 的二级因子变量,在 "consumption_mean"

列中有相应的数据点

我在这里绘制了两个,但是尝试添加一个 abline 并且它根本没有产生我正在寻找的结果(甚至 col= 似乎也不起作用。我将其设置为红色,它会产生黑色。

非常感谢任何帮助

我想要一条通过红色数据点的红色回归线(当 Control==1 时),以及一条通过黑色数据点的黑色回归线(当 Control==0 时)

df_mean <- read.table("https://pastebin.com/raw/C2dz6bDT", header = T)

df_mean$Control <- as.factor(df_mean$Control)

plot(df_mean$mean_consumption~df_mean$day, type="n")
points(df_mean$day[df_mean$Control=='1'],df_mean$mean_consumption[df_mean$Control=='1'],col='red',pch=15,cex=.8)
points(df_mean$day[df_mean$Control=='0'],df_mean$mean_consumption[df_mean$Control=='0'],col='black',pch=15,cex=.8)
abline(lm(df_mean$mean_consumption~df_mean$day+(df_mean$Control=='1'),lwd=1,lty=1,col="red"))
abline(lm(df_mean$mean_consumption~df_mean$day+(df_mean$Control=='0'),lwd=1,lty=1,col="black"))

请注意,不仅线 不是 红色,而且设置为 Control==1 的第一个回归实际上根本不适合红点。

这里有几件事,

1) 您的行没有变红,因为您将 col 和其他参数放入 lm 而不是 abline 这可以通过移动其中一个括号来解决.

abline(lm(df_mean$mean_consumption~df_mean$day+(df_mean$Control=='1')),lwd=1,lty=1,col="red")

2) 您的线条和数据点未对齐,因为您使用不同的 'formulas' 来绘制它们。您的代码应类似于:

plot(x,y)
abline(lm(y ~ x))

对于你的情况,

x = df_mean$day[df_mean$Control=='1'];和
y = df_mean$mean_consumption[df_mean$Control=='1']

所以你的 abline 应该是

abline(lm(df_mean$mean_consumption[df_mean$Control=='1']~df_mean$day[df_mean$Control=='1']),lwd=1,lty=1,col="red")

解决所有问题后,您将获得想要的剧情: