使用gather时如何更改facet的顺序?

问题描述

如何在使用函数 gather 时手动更改刻面的顺序?网格中的数字不是按照我在 myvars 中定义的顺序显示的。

代码如下:

myvars <- c("1","2","3","4","5","6","7","8","9","10","11","12","13","14")
DataVars<- Data[myvars]

DataVars%>%
  gather(-1,key = "var",value = "value") %>% 
  ggplot(aes(x = value,y = 1)) +
  facet_wrap(~ var,scales = "free") +
  geom_jitter(size = 0.5,shape = 16,aes(colour = var),width = 0.5,height = 0.5) +
  geom_smooth(method="lm",size = 1,color = "black",level=0.95)

提前致谢!

解决方法

要在管道中使用已接受的分析器 Fixing the order of facets in ggplot,您需要 mutate 动词:

DataVars%>%
  gather(-1,key = "var",value = "value") %>% 
  mutate(var = factor(var,levels = ...) %>% 
  ggplot(aes(x = value,y = 1)) +
  facet_wrap(~ var,scales = "free") +
  geom_jitter(size = 0.5,shape = 16,aes(colour = var),width = 0.5,height = 0.5) +
  geom_smooth(method="lm",size = 1,color = "black",level=0.95)

在上面的示例中,将 ... 替换为包含所需方面标签顺序的向量。