ggplot2 按第 80 个百分位数重新排序我的箱线图

ggplot2 reorder my boxplot by 80th percentile

我想按照第 80 个百分位值的顺序重新排列我的箱线图。

我的剧情是这样的:

我的代码结构是这样的:

ggplot(data, aes(x=reorder(y, x, median), y)) +
  geom_boxplot(fill="deepskyblue") +
  stat_boxplot(geom ='errorbar', width=0.3) + 
  theme_bw()+
  scale_y_continuous(trans="log10", n.breaks = 6)

目前我按中位数排序。我有两个问题:

  1. 看起来它按中位数对箱线图进行排序,直到大约 1/3 的图,然后返回到随机排序。为什么会这样?

  2. 如何轻松按第 80 个百分位排序?我尝试在 quantile(0.8, y) 中替换 median 但出现错误。

很遗憾,我不能分享数据 structure/variables 因为它是机密的。

谢谢。

  1. 可能是NA导致图表不整齐的问题,之前过滤一下试试:

    data <- data %>% filter(!is.na(y))

  2. 尝试 FUN = quantile, prob = 0.80,在 reorder 函数中你将得到:

     ggplot(data, aes(x=reorder(y, x, FUN = quantile, prob=0.80), y)) +
     geom_boxplot(fill="deepskyblue") +
     stat_boxplot(geom ='errorbar', width=0.3) + 
     theme_bw()+
     scale_y_continuous(trans="log10", n.breaks = 6)