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

在ggplot2中实现离散轴上堆叠竖线展示分位数

离散X轴分位数堆叠竖线图实现(ggplot2)

问题描述

撰写论文时需要展示大量数据分布,目前使用箱线图和小提琴图,但这类图表样式单调,无法完整呈现数据信息。曾见过一种在离散X轴上用堆叠竖线展示分位数的图表:Y轴为分位数值,竖线的聚集情况可体现数据分布。已实现连续X轴版本,希望直接在ggplot2中实现离散X轴效果,无需后期标注。

解决方案代码

修改原有代码,直接基于分类变量构建离散X轴,无需手动映射数值即可实现竖线堆叠效果:

library(ggplot2)

# 定义分位数切点
cutoffs <- seq(0, 1, by = 0.05)

# 生成示例数据
a <- sqrt(seq(1, 10000, length.out = 100))
b <- (seq(1, 10, length.out = 100))^2
c <- seq(1, 100, length.out = 100) 

# 计算各分类的分位数数据
quant_data <- rbind(
  data.frame(class = 'a', quantile = quantile(a, probs = cutoffs)),
  data.frame(class = 'b', quantile = quantile(b, probs = cutoffs)),
  data.frame(class = 'c', quantile = quantile(c, probs = cutoffs))
)

# 绘制离散X轴的分位数堆叠竖线图
ggplot(quant_data, aes(x = class, y = quantile)) +
  # 利用分类变量的内部数值设置竖线宽度,同时保留离散标签
  geom_linerange(aes(xmin = as.numeric(class) - 0.2, xmax = as.numeric(class) + 0.2),
                 linewidth = 2) +
  # 明确指定X轴为离散类型,显示原始分类标签
  scale_x_discrete(name = "类别") +
  labs(y = "分位数值", title = "离散X轴分位数分布堆叠竖线图")

关键调整说明

  • 移除手动创建的x_bases映射,改用as.numeric(class)获取离散类别对应的内部数值,配合固定偏移量设置竖线宽度
  • 通过scale_x_discrete()确保X轴显示原始分类标签,无需后期手动标注
  • 简化数据与图层的映射逻辑,让代码更简洁易维护

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 15:42:12