如何根据非美学变量在ggplot中排序facet?

时间:2017-11-23 11:19:49

标签: r ggplot2

我是R的新手,我正试图通过另一个变量(得分)在我的情节中订购方面。

我的数据采用长格式并按分数排序(范围= 3-12),但这些图不按分数排序。每个方面都是一个id。

以下是我的数据:

  id age mostlikelyclass impclust weight score
12034   1      Persistent        0      1     3
12034   3      Persistent        1      1     3
12034   5      Persistent        0      1     3
12034   8      Persistent        1      1     3
12034  11      Persistent        1      1     3
12034  16      Persistent        0      1     3
12004   1      Persistent        0      1     4
12004   3      Persistent        1      1     4
12004   5      Persistent        0      1     4
12004   8      Persistent        2      1     4
12004  11      Persistent        1      1     4
12004  16      Persistent        0      1     4
21171   1      Persistent        0   0.99     4
21171   3      Persistent        1   0.99     4
21171   5      Persistent        0   0.99     4
21171   8      Persistent        2   0.99     4
21171  11      Persistent        0   0.99     4
21171  16      Persistent        1   0.99     4
11204   1      Persistent        1   1.00     5
11204   3      Persistent        1   1.00     5
11204   5      Persistent        1   1.00     5
11204   8      Persistent        1   1.00     5
11204  11      Persistent        1   1.00     5
11204  16      Persistent        0   1.00     5
12360   1      Persistent        1   1.00     5
12360   3      Persistent        1   1.00     5
12360   5      Persistent        0   1.00     5
12360   8      Persistent        1   1.00     5
12360  11      Persistent        1   1.00     5
12360  16      Persistent        1   1.00     5
28654   1      Persistent        0   0.99     5
28654   3      Persistent        2   0.99     5
28654   5      Persistent        0   0.99     5
28654   8      Persistent        2   0.99     5
28654  11      Persistent        0   0.99     5
28654  16      Persistent        1   0.99     5

我创建了得分记录器,它具有独特的分数,希望我可以按分数级别订购ID,但是将我的所有ID转为NAs之后的行。

scoreorder=unique(persistent$score)
persistent$id=factor(persistent$id, levels=scoreorder)

这是我的绘图代码,它提供了不按分数排序的ID方面。

ggplot(persistent, aes(x = age, y=impclust, group=id )) + 
geom_line()+ facet_wrap(~id)+
ggtitle("Most likely LLCA=Persistent") + xlab("Age")+ theme(axis.text.x = 
element_text(angle = 90, hjust = 1))+
ylab("Cluster")+theme(strip.text = element_text(size=1, lineheight=0.01)) 

产生以下情节:

Facets not ordered by score

1 个答案:

答案 0 :(得分:0)

要阻止来自data.frame的订单,您可以在调用factor时将参数level设置为unique(df$id),因为唯一不会更改原始外观的顺序提供的矢量。这些级别需要包含在要转换为因子的向量中。在您的代码中并非如此,因此您获得了ǸA

ggplot(df, aes(x = age, y=impclust, color=factor(score))) + 
  geom_line()+ facet_wrap(~factor(df$id, levels = unique(df$id)))

enter image description here