ggplot2 легко поддерживает это, сопоставляя столбцы в data.frame с эстетикой. Я считаю, что проще всего использовать melt
из reshape (2) для генерации данных в соответствующем формате для этих задач. ggplot управляет настройкой цветов, определением подходящей легенды и множеством других деталей, которые порой раздражают прорисовку. Например:
library(ggplot2)
dat <- melt(data.frame(x = x, y1 = y1, y2 = y2), id.vars = "x")
ggplot(dat, aes(x, value, colour = variable)) + geom_line()