在R中使用ggplot2根据盒形图对盒形图重新排序

时间:2019-01-16 09:59:48

标签: r ggplot2

我正在使用箱线图显示5个不同数据集之间的分布。

我知道可以根据它们的中位数来排列它们。

我要寻找的是根据第一个四分位数与第三个四分位数之间的差异进行排列。

很显然,我不想通过重新排列级别来手动排列它们。

我已使用tidyverse group_by修复了此问题,并总结并计算了所需四分位数之间的差异,并使用该四分位数来排列框。

如果有人需要代码或有更好的解决方案,请告诉我。

谢谢。

2 个答案:

答案 0 :(得分:1)

这是我根据第一四分位数与第三四分位数之间的差异对盒图进行排序的方式。 “ df”是您的data.frame,“ column1”是您要基于其进行分组的列,“ column2”包含您要查看其分布的值。

DisTable <- df %>%
        group_by(column1) %>%
        summarise(Min=quantile(column2,probs=0.0),
                  Q1=quantile(column2, probs=0.25),
                  Median=quantile(column2, probs=0.5),
                  Q3=quantile(column2, probs=0.75),
                  Max=quantile(column2,probs=1),
                  DiffQ3Q1=Q3-Q1) %>%
        arrange(desc(DiffQ3Q1))

bporder <- as.character(DisTable$column1)

ggplot(df,aes(x=factor(df$column1,levels=bporder),y=column2,fill=column1))+
        geom_boxplot()

答案 1 :(得分:1)

您是指四分位间距(IQR())吗?如果可以的话

diamonds %>% 
  as.tibble() %>% 
  ggplot(aes(reorder(cut, price, IQR), price)) + 
   geom_boxplot()