r - 用ggplot2将多个y值绘制为单独的线的正确方法

标签 r ggplot2

我经常遇到一个问题,即我的数据框包含一个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/

相关文章:

r - 创建灵活的 ggplot2 主题,1) 使图例和标题更大,2) 无论最终尺寸如何,看起来都不错

r - ggplot2中同一图例中的不同图例键

r - 如何可视化组和子组频率?

r - data.table list .N (count) 完全删除行而不是输入 0 计数

r - 在组类别末尾的新列中添加包含组总和的行

r - Tidyr使用正则表达式将列值分为字符和数字

r - 通过将data.frame的列名传递给apply()或plyr函数来替换所选列中的值

r - 在 reddit URL 中输入 5 个字符(数字)ID

r - 仅命名小平面图中的第一个条形

r - 将字母显示为 geom_text 图例的关键字形,而不是默认的 'a'