ggplot2时间序列,在x轴上有一个有序因子

时间:2015-04-18 06:41:21

标签: r ggplot2 time-series

我非常感谢您对以下问题的帮助。

我希望为不同时间进行测试的不同科目创建一个代表性的时间序列。数据框称为Hayling.Impulsivity。以下是宽格式数据的示例:

     Subject Baseline 2-weeks 6-weeks 3-months
1       1       15      23       5       NA
2       2       15      27       3        4
3       3        5       7       0       19
4       4        1       5       2        6
5       5        3       7      18       27
6       6        0       2      19        2`

然后我将主题作为一个因素:

Hayling.Impulsivity$Subject<-factor(Hayling.Impulsivity$Subject)

然后我使用reshape包将数据框格式化为长格式:

Long.H.I.<-melt(Hayling.Impulsivity, id.vars="Subject", variable.name="Follow Up", value.name="Hayling AB Error Score")

然后我订购了测量变量:

Long.H.I.$"Follow Up"<-factor(Long.H.I.$"Follow Up", levels=c("Baseline", "2-weeks", "6-weeks", "3-months"), ordered=TRUE)

以下是此数据框的结构:

'data.frame':   52 obs. of  3 variables:
 $ Subject               : Factor w/ 13 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ Follow Up             : Ord.factor w/ 4 levels "Baseline"<"2-weeks"<..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Hayling AB Error Score: num  15 15 5 1 3 0 3 0 0 33 ...

现在我尝试在ggplot中构建时间序列:

ggplot(Long.H.I., aes("Follow Up", "Hayling AB Error Score", group=Subject, colour=Subject))+geom_line()

但我得到的只是一个空洞的情节。我不允许发布图像给你看,但x和y轴只标有&#34;跟进&#34;和&#34; Hayling AB错误分数&#34;分别。两个轴上都没有实际的比例/值/类别,也没有绘制任何点。

我哪里出错?

1 个答案:

答案 0 :(得分:1)

即使您使用aes_string,列名中的空格也会导致问题。您可以用下划线替换空格,然后明确标记x和y轴。代码可能如下所示:

Hayling.Impulsivity$Subject<-factor(Hayling.Impulsivity$Subject)
Long.H.I.<-melt(Hayling.Impulsivity, id.vars="Subject", 
                variable.name="Follow_Up", value.name="Hayling_AB_Error_Score")
Long.H.I.$Follow_Up <-factor(Long.H.I.$"Follow_Up", 
                             levels=c("Baseline","2-weeks","6-Weeks","3-months"), ordered=TRUE)
ggplot(Long.H.I., aes(Follow_Up, Hayling_AB_Error_Score, group=Subject, colour=Subject))+
  geom_line() +
  labs(x="Follow Up", y="Hayling AB Error Score")