请求修改ggplot代码生成GLP与No GLP队列并发症率对比柱状图
调整ggplot代码实现GLP/No GLP队列并发症发生率分组对比柱状图
核心调整思路
将堆叠分面柱状图改为分组并排样式,关键是修改geom_col的位置参数为position_dodge(),并调整数据映射逻辑(移除分面,将队列作为填充变量、并发症类型作为X轴)。
数据格式适配(若需)
如果你的GLPcomprate是宽格式(每行对应一种并发症,列分别为GLP和No GLP的发生率),先转换为长格式:
library(tidyr) GLPcomprate_long <- GLPcomprate %>% pivot_longer( cols = c("GLP", "No GLP"), # 替换为你实际的队列列名 names_to = "Group", values_to = "Rate" )
若数据已是长格式(包含Complication_Type、Group、Rate字段),可直接跳过此步骤。
调整后的ggplot代码
library(ggplot2) ggplot(GLPcomprate_long, aes(x = Complication_Type, y = Rate, fill = Group)) + # 分组并排柱状图,width控制柱子宽度,position_dodge控制分组间距 geom_col(position = position_dodge(width = 0.8), width = 0.7) + # 添加百分比标签,位置与柱子对齐 geom_text( aes(label = paste0(Rate, "%")), position = position_dodge(width = 0.8), vjust = -0.5, # 标签置于柱子上方 size = 3.5 ) + # 自定义图表标签 labs( title = "GLP与No GLP队列并发症发生率对比", x = "并发症类型", y = "发生率 (%)", fill = "队列分组" ) + theme_bw() + # 若并发症名称过长,旋转X轴标签避免重叠 theme(axis.text.x = element_text(angle = 45, hjust = 1))
关键修改点说明
- 移除分面逻辑:删除原代码中的
facet_wrap()/facet_grid(),将并发症类型直接映射到X轴 - 设置分组并排:
geom_col的position = position_dodge()实现同一X轴类别下的柱子并排展示 - 标签对齐:
geom_text的position_dodge宽度需与geom_col保持一致,确保标签对应正确柱子 - 格式适配:宽格式数据必须转换为长格式,才能让ggplot正确识别分组变量
内容的提问来源于stack exchange,提问作者Preston Carey
相关产品推荐
相关产品推荐

