我有两组数据(x1,y1)和(x1,y2)。我为每组进行了回归,并希望将它们绘制在同一个图上(包括点和回归线)。这是我的代码
x1 <- 1:5
y1 <- x1 + rnorm(x1)
y2 <- x1 + 2 + rnorm(x1)
fit1 <- lm(y1 ~ x1)
fit2 <- lm(y2 ~ x1)
plot(x1, y1, pch = 1, ylim = c(min(y1, y2), max(y1, y2)), xlab = "x", ylab = "y")
points(x1, y2, pch = 2)
abline(fit1, lty = 1)
abline(fit2, lty = 2)
legend("topleft", legend = c("Line 1", "Line 2"), pch = c(1, 2), lty = c(1, 2))
这就是我得到的。
我在传奇中真正想要的是将点和线并排放在一起,而不是彼此叠加,这应该是这样的。
非常感谢任何建议!
答案 0 :(得分:15)
我认为你可以这样做:
legend('topright',c('','name'),lty=c(1,NA),pch=c(NA,'X'),bg='white',ncol=2)
间距可能有点尴尬,但它会将线条和符号分开。如果您打算在图例中设置多个线符号对,请务必将其设置为,例如lty=c(1,2,3,NA,NA,NA)
。
答案 1 :(得分:3)
虽然不是很优雅,但你可以很容易地制作两个传说。可以保存图例位置的坐标以便于参考(例如,在下面的lgd
对象中):
lgd <- legend("topleft", legend = c("", ""), pch = NA, lty = c(1, 2), bty="n")
legend(lgd$rect$left+lgd$rect$w, lgd$rect$top, legend = c("Line 1", "Line 2"), pch = c(1,2), bty="n")
我个人喜欢@ CarlWitthoft的解决方案......