Правильный способ построения нескольких значений y в виде отдельных строк с помощью ggplot2

Я часто сталкиваюсь с проблемой, когда у меня есть кадр данных, который имеет одну переменную x, одну или несколько переменных фасетов и несколько разных других переменных. Иногда я хотел бы одновременно отображать разные y-переменные в виде отдельных строк. Но это всегда только подмножество, которое я хочу. Я попытался использовать расплав, чтобы получить "переменную" в качестве столбца и использовать его, и он работает, если я хочу, чтобы каждый столбец находился в исходном наборе данных. Обычно я этого не делаю.

Прямо сейчас я делал все, что круто, похоже. Предположим, что с mtcars я хочу построить disp, hp и wt против mpg:

ggplot(mtcars, aes(x=mpg)) + 
  geom_line(aes(y=disp, color="disp")) + 
  geom_line(aes(y=hp, color="hp")) + 
  geom_line(aes(y=wt, color="wt"))

Это кажется излишним. Если я сначала расплав mtcars, тогда все переменные будут расплавлены, а затем я закрою график других переменных, которые я не хочу.

Есть ли у кого хороший способ сделать это?

Ответ 1

ggplot всегда предпочитает длинный формат данных, поэтому melt it:

mtcars.long <- melt(mtcars, id = "mpg", measure = c("disp", "hp", "wt"))
ggplot(mtcars.long, aes(mpg, value, colour = variable)) + geom_line()