问题 使用ggplot2将多个y值绘制为单独行的正确方法


我经常遇到一个问题,我有一个数据框,它有一个x变量,一个或多个facet变量,以及多个不同的其他变量。有时我想同时将不同的y变量绘制为单独的行。但它始终只是我想要的一个子集。我已经尝试使用melt来将“变量”作为一个列并使用它,如果我想要原始数据集中的每一列,它都可以工作。通常我没有。

现在我一直在做一些非常迂回的感觉。假设使用mtcars我想对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,那么所有变量都会融化,然后我将最终绘制出我不想要的其他变量。

有没有人有这样做的好方法?


1528
2017-09-27 13:52


起源



答案:


ggplot总是喜欢  格式化数据帧,所以 melt 它:

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

11
2017-09-27 14:10



所以措施部分是我忽略的事情。我想这是正确的方式,当你以交互方式探索时会有点烦人。 - Chris Neff
@Chris - 或者,按照您的建议融化整个data.frame,然后使用 subset() 作为数据参数 ggplot() 如果你计划策划不同的事情并且不想重新打电话 melt - Chase


答案:


ggplot总是喜欢  格式化数据帧,所以 melt 它:

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

11
2017-09-27 14:10



所以措施部分是我忽略的事情。我想这是正确的方式,当你以交互方式探索时会有点烦人。 - Chris Neff
@Chris - 或者,按照您的建议融化整个data.frame,然后使用 subset() 作为数据参数 ggplot() 如果你计划策划不同的事情并且不想重新打电话 melt - Chase