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

如何在R的ggplot中单独缩窄条形图的单个条形(避免新建数据对象)

解决ggplot分组条形图中部分组条形过宽的问题

问题根源在于:Baseline组仅包含Normal这一个类别,而Exit组有Normal、Borderline、Clinical三个类别。默认的position="dodge"会将每个Timepoint分组的总宽度平均分配给该组实际存在的类别,导致Baseline的Normal条形占据了整个分组宽度,看起来比Exit组的条形宽很多。

无需新建数据框或对象,只需修改geom_bar中的位置参数即可解决:

CBCLedit %>% 
  ggplot(aes(Timepoint, ..count..)) + 
  geom_bar(aes(fill = Range), 
           position = position_dodge(preserve = "single"),  # 关键修改
           color = 'black',
           width = 0.5)+
  mdthemes::md_theme_classic() +
  xlab('Timepoint') +
  ylab('Frequency') +
  labs (
    title = '**Anxiety Range Score**',
    fill='Range Categories') +
  scale_fill_manual(values=c("#FF2327",
                             "#30B5DE",
                             "#83D72F"))+
  scale_y_continuous(expand = c(0,0),
                     limits = c(0,12),
                     breaks = c(0,6,12))

关键说明

position_dodge(preserve = "single")会强制每个条形保持相同的宽度,无论其所在分组包含多少个类别。这样Baseline组的Normal条形宽度就会和Exit组的对应条形完全一致,同时保留分组dodge的布局效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 18:43:33