2つのデータセット(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))
これは私が得たものです。
凡例で実際に必要なのは、ポイントとラインを互いに重ねるのではなく並べて作成することです。これは次のようになります。
どんな提案も大歓迎です!
私はあなたがこのようにそれを行うことができると思います:
_legend('topright',c('','name'),lty=c(1,NA),pch=c(NA,'X'),bg='white',ncol=2)
_
間隔は少し厄介かもしれませんが、線と記号が分離されます。凡例に複数の行と記号のペアを含める場合は、次のように設定してください。 lty=c(1,2,3,NA,NA,NA)
。
あまりエレガントではありませんが、2つの凡例を簡単に並べて作成できます。凡例の場所の座標は、簡単に参照できるように保存できます(たとえば、以下の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のソリューションが好きです...