我有一个csv文件,我在df
。
time d e f id
1 -0.3813535 -0.3766915 1.2365178 a
2 -0.5192448 -0.8325136 0.7229763 a
3 0.3292604 -0.3832252 1.2250516 b
4 0.5438868 -1.1085977 1.3113659 b
5 -0.6883436 -1.9918862 0.5804269 a
6 0.7651908 -0.6465595 1.1116675 b
7 0.8359222 -0.1933391 2.3156759 a
8 1.5074557 -0.1650911 2.3737362 b
9 0.7095554 2.2623272 3.0409351 a
10 0.7137618 2.7033626 2.5880434 b
实际上我想为id
a和b拍摄2个图。
到目前为止,我所拥有的是时间计划
library(ggplot2)
library(reshape)
df <- melt(df , id = 'time')
ggplot(df, aes(time,value)) + geom_line() + facet_grid(series ~ .)
更新数据格式:
time d id
1 -0.3813535 a
2 -0.5192448 a
3 0.3292604 b
4 0.5438868 b
5 -0.6883436 a
6 0.7651908 b
7 0.8359222 a
8 1.5074557 b
9 0.7095554 a
10 0.7137618 b
答案 0 :(得分:4)
从你的问题来看,不清楚情节应该如何看,但至少有两种可能的方式。
乞讨融化您的数据(使用库reshape2
)并使用time
和id
列作为id.vars=
。
library(reshape2)
df.long <- melt(df , id.vars = c("time","id"))
head(df.long)
time id variable value
1 1 a d -0.3813535
2 2 a d -0.5192448
3 3 b d 0.3292604
4 4 b d 0.5438868
5 5 a d -0.6883436
6 6 b d 0.7651908
第一个变体 - 使用variable
获取不同颜色的线条,然后使用id
进行制作。
ggplot(df.long,aes(time,value,color=variable))+geom_line()+
facet_grid(id~.)
第二个变体 - 如果所有行都应位于不同的方面,则在构面中同时使用variable
和id
。
ggplot(df.long,aes(time,value))+geom_line()+
facet_grid(variable~id)
如果数据已经是长格式(无需融化数据),那么只需使用facet_grid(id~.)
和group=id
将行放在不同的方面。
ggplot(df,aes(time,d,group=id))+geom_line()+facet_grid(id~.)