ggplot2每行数据框中的一条线。

5

我有一个包含以下数据的CSV文件:

user,Measurement1,Measurement2,Measurement3,group
1,0.1,0.7,0.2,3
2,0.3,0.3,0.4,2
3,0.3,0.3,0.4,2

我需要为每个用户绘制一条线。x轴可以只是1、2、3(每个测量点标记为before、at、after,但我稍后可以处理标签)。颜色将由组列设置。我找到了一个类似于我所需的图表,但我不想使用用户代码作为x值。


1
注意:不要手动输入数据,使用“dput”函数 - 这样其他人就可以将其复制并粘贴到他们的R控制台中,以便他们可以处理您的实际数据。 - Drew Steen
1个回答

8

ggplot 喜欢使用“长格式”的数据,即每个维度都有一列,每个观测值都有一行。您的数据目前是“宽格式”。使用 reshape 包将其转换为“长格式”。

我理解正确吗?您希望将Measurement1、Measurement2和Measurement3放在x轴上吗?(这样,在您的数据中,用户1的线将从0.1到0.7到0.2?如果是这样,您需要像这样做:

require(reshape)

#Recreate your data frame
user <- gl(3, 1)
Meas1 <- c(0.7, 0.3, 0.3)
Meas2 <- c(0.7, 0.3, 0.3)
Meas3 <- c(0.2, 0.4, 0.4)
group <- c(3, 2, 2)
df <- data.frame(user=user, Meas1=Meas1, Meas2=Meas2, Meas3=Meas3, group=group)

#'melt' the data frame into long format
dfm <- melt(df, id.vars=c("user", "group"))

ggplot(dfm, aes(x=as.numeric(variable), y=value, colour=user)) + geom_line()

enter image description here


谢谢Drew,非常有用。我正在使用您提到的melt来重新塑造数据和group来绘制图表:ggplot(mdataFiltered,aes(x = Time,y = RR))+ geom_line(aes(group = user),alpha = 0.3,linetype = 3)+ opts(title ='按用户绘制')+ facet_grid(facets =。〜typeOfUser) - DJMJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接