ここに 1 つの方法がありますが、あまり気に入らないと思います。
d1 <- data.frame(x = 1:10,
y = rep(1:2,each = 5),
grp = factor(rep(letters[1:2],each = 5),levels = letters[1:3]))
d1 <- rbind(d1,data.frame(x = 1:2,y = c(NA,NA),grp = c('c','c')))
d2 <- data.frame(x = 1:15,
y = rep(3:5,each = 5),
grp = rep(1:3,each = 5))
ggplot() +
geom_line(data = d1,aes(x = x,y = y,group = grp,colour = grp)) +
geom_line(data = d2,aes(x = x,y = y,group = grp),colour = "blue")
このソリューションは、他の種類のデータではうまく機能しないことに注意してください。凡例の同じカテゴリにマージしたい 3 つの線のそれぞれが、基本的に同じ場所で始まり、終わるということが起こります。そうしないと、不要なコネクタ ラインができてしまいます。
上記の方法はより一般的に機能しますが、ご覧のとおり、それほど厄介ではありません。どちらかといえば不便です。
この種の問題は何度も発生しており、より簡単な解決策を忘れている可能性があります。ただし、一般的には、すべての凡例を手動で作成する必要がなくなる ggplot2と引き換えに、(常にではありませんが頻繁に) ベース グラフィックスと比較してある程度の柔軟性が犠牲になっていることに注意してください。