如何在R中制作意大利面条?

时间:2014-08-13 16:51:47

标签: r plot interaction

我有以下内容: 头(数据帧):

ID Result Days 

1   70     0         
1   80     23
2   90     15
2   89     30
2   99     40
3   23     24

等... 我想要做的是:用上面的数据创建一个意大利面条图。我用的是:

interaction.plot(dataframe$Days,dataframe$ID,dataframe$Result,xlab="Time",ylab="Results",legend=F)但是,即使它们被认为是一条长线,也没有一条患者是连续的。

此外,我想将上述数据帧转换为以下内容: ID结果天数

1   70     0         
1   80     23
2   90     0
2   89     15
2   99     25
3   23     0
等等......(我试图获取每个id的第一个(或最小),并从零开始约会)。同样在意大利面条情节中,我希望所有患者在满足条件时具有相同的颜色,如果不满足条件则需要另一种颜色。

感谢您的时间和耐心。

1 个答案:

答案 0 :(得分:2)

如何使用ggplot2和data.table

# libs
library(ggplot2)
library(data.table)

# your data
df <- data.table(ID=c(1,1,2,2,2,3),
                 Result=c(70,80,90,89,99,23),
                 Days=c(0,23,15,30,40,24))

# adjust each ID to start at day 0, sort
df <- merge(df, df[, list(min_day=min(Days)), by=ID], by='ID')
df[, adj_day:=Days-min_day]
df <- df[order(ID, Days)]

# plot
ggplot(df, aes(x=adj_day, y=Result, color=factor(ID))) +
  geom_line() + geom_point() +
  theme_bw()

更新的data.frame(实际上是data.table)的内容:

 ID Result Days min_day adj_day
  1     70    0       0       0
  1     80   23       0      23
  2     90   15      15       0
  2     89   30      15      15
  2     99   40      15      25
  3     23   24      24       0

Plot output 您可以使用scale_color_manual()

轻松处理颜色编码