You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ggplot2箱线图按第80百分位数排序方法及排序异常问题问询

问题1 排序部分失效原因

  • 首要原因是reorder函数的参数顺序错误:reorder的标准语法是reorder(待排序的分类变量, 用于排序的数值变量, 汇总函数)。你当前代码里写的reorder(y, x, median)默认是拿x作为数值变量、y作为分类变量计算中位数排序,如果你的x实际是分类变量、y是数值变量,参数顺序完全颠倒,自然会出现排序逻辑混乱的情况。
  • 排除参数错误的情况后,如果存在大量分类的中位数数值完全相等,这些中位数相同的分类会保持原始数据的因子顺序,看起来就像随机排序,这也是你描述的“前部分符合排序、后部分乱序”的典型诱因。

问题2 按80百分位数排序实现方法

你直接替换为quantile(0.8, y)报错是因为quantile的参数顺序错误,且reorder的第三个参数需要传入一个作用于数值向量的函数,正确写法参考如下(先修正reorder的参数顺序,再替换汇总函数为计算80百分位数的匿名函数):

ggplot(data, aes(x=reorder(x, y, function(v) quantile(v, probs = 0.8, na.rm = TRUE)), y=y)) +
  geom_boxplot(fill="deepskyblue") +
  stat_boxplot(geom ='errorbar', width=0.3) + 
  theme_bw()+
  scale_y_continuous(trans="log10", n.breaks = 6)

代码中加na.rm = T是为了避免数据存在缺失值时计算分位数报错,你可以根据自己的数据情况选择是否保留。

内容的提问来源于stack exchange,提问作者tm95

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:06:07