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

如何调整R语言堆叠条形图分段顺序:--至++排列且NA居右

调整堆叠条形图分段顺序的解决方法

现有R语言代码生成堆叠条形图,需要调整横向条形图的分段顺序,使每个条内从左到右依次为--、-、0、+、++,NA位于最右侧。以下是实现方案:

修改后的完整代码

library(dplyr)
library(ggplot2)
library(tidyr)

size <- 100

df <- data.frame(item1 = sample(c(1:5, 1:5, 99), size = size, replace = TRUE),
                 item2 = sample(c(1:5, 1:4, 99), size = size, replace = TRUE),
                 item3 = sample(c(1:5, 1:3, 99), size = size, replace = TRUE),
                 item4 = sample(c(1:5, 1:5, 99), size = size, replace = TRUE),
                 item5 = sample(c(1:5, 1:4, 99), size = size, replace = TRUE)) 

# 堆叠条形图(调整分段顺序)
df %>% 
  pivot_longer(cols = starts_with("item")) %>%
  group_by(name) %>%
  count(value) %>%
  mutate(perc = 100 / sum(n) * n) %>%
  ungroup() %>%
  # 明确指定因子水平与对应标签的顺序
  mutate(value = factor(value, 
                        levels = c(1, 2, 3, 4, 5, 99), 
                        labels = c("--", "-", "0", "+", "++", "NA"))) %>%
  ggplot(aes(x = name, y = perc, fill = value)) +
  # 反转堆叠顺序,配合coord_flip实现左到右的期望顺序
  geom_col(position = position_stack(reverse = TRUE)) +
  coord_flip()

关键调整说明

  • 因子水平定义:通过factor()明确指定levels的顺序为c(1,2,3,4,5,99),对应标签--、-、0、+、++、NA,确保数据的分类顺序与展示需求匹配。
  • 堆叠顺序控制:添加position = position_stack(reverse = TRUE)参数,由于coord_flip()会翻转坐标系,反转堆叠顺序后,横向条形图的分段会从左到右按照因子水平的顺序排列,最终实现--在最左侧、NA在最右侧的效果。

内容的提问来源于stack exchange,提问作者D. Studer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:20:31