在 rstudio 中重新排序箱线图

Reorder boxplot in rstudio

我正在尝试根据中位数对箱线图重新排序。

mymonths <- c("Jan","Feb","Mar",
              "Apr","Mei","Jun",
              "Jul","Aug","Sep",
              "Okt","Nov","Dec")
df1 <- nycflights13::flights %>% 
  filter(dep_delay > 10) %>%
  select(month, arr_delay) %>% 
  filter(arr_delay < 480) %>%
  mutate(Maand  = mymonths[month])

ggplot(data = df1, mapping = aes(x = arr_delay, y = Maand)) +
  geom_boxplot(outlier.colour = 'red', outlier.alpha = 0.1) +
  labs(x = "Vertraging bij aankomst", caption = "Vluchten die uit New York vertrekken") +
  ggtitle("Vertraging van vluchten per maand (in min)")

现在我想我可以使用函数 reorder() 或 fct_reorder(), 我会在 x 的 aes() 中填写类似 fct_reorder(Maand, arr_delay, fun = median) 的内容。 (尝试切换“Maand”和“arr_delay”,但它也不起作用) 没有重新排序的箱线图看起来很完美,但是一旦我使用重新排序,它就会给我一些非常奇怪的东西。

任何帮助都会很棒!

尝试:

library(ggplot2)
ggplot(data = df1, mapping = aes(x = arr_delay, 
       y = forcats::fct_reorder(Maand, arr_delay))) +
  geom_boxplot(outlier.colour = 'red', outlier.alpha = 0.1) +
  labs(x = "Vertraging bij aankomst", 
       caption = "Vluchten die uit New York vertrekken") +
  ggtitle("Vertraging van vluchten per maand (in min)")

如果您想要相反顺序的条形图,请使用 y = forcats::fct_reorder(Maand, -arr_delay)

我试过了fct_reorder(Maand, arr_delay, .fun = median),看起来不错。

ggplot(data = df1, mapping = aes(x = arr_delay, y = fct_reorder(Maand, arr_delay, .fun = median))) +
  geom_boxplot(outlier.colour = 'red', outlier.alpha = 0.1) +
  labs(x = "Vertraging bij aankomst", caption = "Vluchten die uit New York vertrekken") +
  ggtitle("Vertraging van vluchten per maand (in min)")