【问题标题】:ggplot2 one line per each row dataframeggplot2 每行数据帧一行
【发布时间】:2012-10-05 08:22:48
【问题描述】:

我有一个包含以下数据的 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(每次测量一个点,标记为之前、之后、之后,但我可以稍后计算出标记)。颜色将由组列设置 我发现a plot 与我需要的类似,但我不想使用用户代码作为 x 值。

【问题讨论】:

  • 注意:不要输入您的数据,而是使用 dput 函数 - 然后其他人可以复制并粘贴到他们的 R 控制台中,以便他们可以处理您的实际数据。

标签: r ggplot2 dataframe


【解决方案1】:

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()

【讨论】:

  • 谢谢Drew,非常有用,我正在使用你所说的melt来重塑数据和图表组:ggplot(mdataFiltered, aes(x=Time, y=RR)) + geom_line (aes(group=user), alpha=0.3, linetype=3) + opts(title='Plot by user') + facet_grid(facets=.~typeOfUser)
猜你喜欢
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 2020-05-22
  • 1970-01-01
  • 2020-05-30
  • 1970-01-01
  • 2018-03-30
  • 1970-01-01
相关资源
最近更新 更多