我的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
绘制dac
和app
作为id
的函数。我知道如何使用app
和melt
批量绘图,只对一个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
轴= id
,y
轴= vac
和dac
的值,每个app
因子
答案 0 :(得分:2)
您要查找的内容有点不清楚,但如果您要查找连接vac
和dac
值的行,请使用dplyr
和{ {1}}。
首先,tidyr
gather
和vac
列(这与dac
类似,但我发现更容易理解的语法)。然后,将reshape2::melt
(其中包含“vac”和“dac”)设置为x位置,variable
(来自旧value
和vac
列)您的y然后将dac
和app
映射到美学(此处为id
和color
)。设置linetype
以确保它连接正确的点对,然后添加group
:
geom_line
给出
鉴于问题编辑,您可以像这样更改轴:
df %>%
gather(variable, value, vac, dac) %>%
ggplot(aes(x = variable
, y = value
, color = factor(app)
, linetype = factor(id)
, group = paste(app, id))) +
geom_line()
给出
答案 1 :(得分:1)
我不确定,我理解你的问题,但我会做类似
的事情ggplot(df,aes(vac,app,group=app)) + geom_point(aes(color=factor(app)))