在 x 轴上具有有序因子的 ggplot2 时间序列
ggplot2 time series with an ordered factor on the x-axis
非常感谢您就以下问题提供的帮助。
我希望为以离散时间间隔进行测试的不同对象创建一个具有代表性的时间序列。数据框称为 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)
然后我使用重塑包将数据框融化为长格式:
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()
但我得到的只是一个空的情节。我不允许 post 一张图片给你看,但是 x 轴和 y 轴分别只用 "Follow Up" 和 "Hayling AB Error Score" 标记。两个轴上都没有实际的比例/值/类别,也没有绘制任何点。
我哪里做错了?
即使您使用 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")
非常感谢您就以下问题提供的帮助。
我希望为以离散时间间隔进行测试的不同对象创建一个具有代表性的时间序列。数据框称为 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)
然后我使用重塑包将数据框融化为长格式:
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()
但我得到的只是一个空的情节。我不允许 post 一张图片给你看,但是 x 轴和 y 轴分别只用 "Follow Up" 和 "Hayling AB Error Score" 标记。两个轴上都没有实际的比例/值/类别,也没有绘制任何点。
我哪里做错了?
即使您使用 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")