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

ggplot2中等长堆叠条形图实现:保留结果序列的方法

解决方案

可以实现,核心是通过指定堆叠顺序来绑定cycle序列和对应的outcome,同时用val保证每个cycle的高度为1。修改后的代码如下:

# setup
library(ggplot2)
library(dplyr)    
set.seed(0)

# test data
data.frame(
  cycle = factor(rep(1:8,2), levels = 1:8),
  val = 1,
  id = factor(rep(1:2, each = 8)),
  outcome = factor(paste("Outcome", sample(1:8,16,T)), levels = paste("Outcome",1:8))
) %>%
  # 修正后的绘图代码
  ggplot(aes(x = id, y = val, fill = outcome, order = cycle)) +
  geom_bar(stat = "identity", position = position_stack(reverse = TRUE), width = 0.99) +
  coord_flip() +
  scale_y_continuous(breaks = seq(0.5, 8.5, 1), labels = 1:8) +
  ylab("cycle")

关键改动说明:

  • 将y轴映射为val:每个cycle对应高度1,彻底避免了用cycle作为y轴时的求和问题。
  • 添加order = cycle:强制ggplot按照cycle的顺序堆叠条形,确保cycle序列连续,每个outcome和对应的cycle严格绑定,不会被fill的类别顺序打乱。
  • 自定义y轴刻度:通过scale_y_continuous把刻度标签设置为cycle序号,让坐标轴显示更贴合需求,直观展示每个堆叠部分对应的cycle。
  • 保留position_stack(reverse = TRUE):维持你原本需要的堆叠方向,保证cycle从1到8的顺序在视觉上连续。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:40:30