Упорядочение элементов внутри фасета в ggplot2

#r #ggplot2

#r #ggplot2

Вопрос:

Я хочу, чтобы порядок x был отсортирован по столбцу y в двух фасетах. Я пытался запустить этот скрипт, но порядок в фасетах меняется. введите описание изображения здесь

 > new_data <- read.table("check.txt",header=T,sep="t")
> new_data
  f     x     y stderr
1 A   one 0.308  0.003
2 A   two 0.305  0.004
3 A three 0.304  0.003
4 A  four 0.302  0.003
5 B   one 0.313  0.003
6 B three 0.310  0.003
7 B   two 0.308  0.003
8 B  five 0.307  0.004
> ggplot(new_data, aes(fct_reorder(x,y), y))   geom_point(aes(color = f))   scale_color_manual(values = c("#00AFBB", "#E7B800"))  geom_errorbar(aes(ymin = y - 3 * stderr, ymax = y   3 * stderr))  coord_flip()    facet_wrap(~ f,scales = "free_y",ncol = 1,strip.position = "right")   theme(axis.text.x = element_text(size=10, angle=90,hjust = 1), axis.text.y = element_text(size=9))  theme_bw()  theme(strip.background = element_rect(colour="black", fill="white"),strip.text.y = element_text(size=8,face="bold"),legend.position = "none")

  

Может кто-нибудь мне помочь, как я могу иметь в фасете A: один два три четыре и в фасете B: один три два пять. Спасибо

Ответ №1:

В следующем коде я сделал x коэффициентом с уровнем и изменил fct_reorder на ftc_rev

 library(tidyverse)

new_data <- data.frame(f = c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'), 
                       x = c('one', 'two', 'three', 'four', 'one' , 'three', 'two', 'five'), 
                       y = c(0.308, 0.305, 0.304, 0.302, 0.313, 0.310, 0.308, 0.307), 
                       stderr = c(0.003, 0.004, 0.003, 0.003, 0.003, 0.003, 0.003, 0.004)) %>% 
  mutate(x = factor(x, 
                    levels = c('one', 'two', 'three', 'four', 'five'), 
                    ordered = T)) %>% 
  arrange(x)

ggplot(new_data, aes(fct_rev(x), y))   
  geom_point(aes(color = f))   
  scale_color_manual(values = c("#00AFBB", "#E7B800"))  
  geom_errorbar(aes(ymin = y - 3 * stderr, ymax = y   3 * stderr))  
  coord_flip()   
  facet_wrap(~ f,scales = "free_y",ncol = 1,strip.position = "right")   
  theme(axis.text.x = element_text(size=10, angle=90,hjust = 1), axis.text.y = element_text(size=9))  
  theme_bw()  
  theme(strip.background = element_rect(colour="black", fill="white"),
        strip.text.y = element_text(size=8,face="bold"),
        legend.position = "none")
  

график