我经常遇到一个问题,即我的数据框包含一个x变量,一个或多个facet变量以及多个其他变量。有时我想同时将不同的y变量绘制为单独的线。但这始终只是我想要的一个子集。我尝试使用melt来获取“变量”作为列并使用它,并且如果我想要原始数据集中的每个列都可以使用。通常我不会。
现在,我一直在做一些感觉像是回旋的事情。假设使用mtcar,我想针对mpg绘制disp,hp和wt:
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,那么所有变量都会融化,然后我将绘制其他我不想要的变量。
有人有这样做的好方法吗?
最佳答案
ggplot总是喜欢长格式的数据帧,因此melt
它:
library(reshape2)
mtcars.long <- melt(mtcars, id = "mpg", measure = c("disp", "hp", "wt"))
ggplot(mtcars.long, aes(mpg, value, colour = variable)) + geom_line()
进行此转换还有许多其他选择。您可以查看R-FAQ on converting data from wide to long以获得概述。
关于r - 用ggplot2将多个y值绘制为单独的线的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7570319/