如何在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
相关产品推荐
相关产品推荐

