R:绘制多条曲线与一条变量,但对于4个因子

时间:2017-02-07 17:43:14

标签: r plot aggregate melt

我的DF看起来像:

   id     app  vac dac
1:  1 1000802  579 455
2:  1 1000803 1284 918
3:  1 1000807   68  66
4:  1 1000809 1470 903
5:  2 1000802  407 188
6:  2 1000803  365 364
7:  2 1000807  938 116
8:  2 1000809  699 570

我需要在同一个画布上为每个vac绘制dacapp作为id的函数。我知道如何使用appmelt批量绘图,只对一个ggplot执行此操作。但我被困在如何做任意数量的因素/水平。

在这个例子中,4 app总共有8条曲线。有什么想法吗? 这是测试的数据框。谢谢!!

df = structure(list(id = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), app = c(1000802, 
                                                               1000803, 1000807, 1000809, 1000802, 1000803, 1000807, 1000809
), vac = c(579, 1284, 68, 1470, 407, 365, 938, 699), dac = c(455, 
                                                             918, 66, 903, 188, 364, 116, 570)), .Names = c("id", "app", "vac", 
                                                                                                            "dac"), class = c("data.table", "data.frame"), row.names = c(NA, 
                                                                                                                                                                         -8L))

编辑:关于轴的一些说明, x轴= idy轴= vacdac的值,每个app因子

2 个答案:

答案 0 :(得分:2)

您要查找的内容有点不清楚,但如果您要查找连接vacdac值的行,请使用dplyr和{ {1}}。

首先,tidyr gathervac列(这与dac类似,但我发现更容易理解的语法)。然后,将reshape2::melt(其中包含“vac”和“dac”)设置为x位置,variable(来自旧valuevac列)您的y然后将dacapp映射到美学(此处为idcolor)。设置linetype以确保它连接正确的点对,然后添加group

geom_line

给出

enter image description here

鉴于问题编辑,您可以像这样更改轴:

df %>%
  gather(variable, value, vac, dac) %>%
  ggplot(aes(x = variable
             , y = value
             , color = factor(app)
             , linetype = factor(id)
             , group = paste(app, id))) +
  geom_line()

给出

enter image description here

答案 1 :(得分:1)

我不确定,我理解你的问题,但我会做类似

的事情
ggplot(df,aes(vac,app,group=app)) + geom_point(aes(color=factor(app)))