ggsurvfit 添加风险表后如何固定 y 轴标题位置?
数据小许
结论
可以继续使用 ggsurvfit 和 add_risktable()。现有答复没有提供原生选项,让 y 轴标题在组合图中自动贴近主图坐标轴。一个可行的处理方法是隐藏默认标题,再用 annotation_custom() 在主图绘图区左侧添加旋转文字。偏移量需要根据图形尺寸调整。
原因
add_risktable() 会将风险表与生存曲线组合显示。相关答复指出,这种组合布局使用了 patchwork,y 轴标题可能落在组合图左侧的公共区域,与上方主图的 y 轴相距较远。问题中的代码用 labs(y = "Cumulative incidence") 设置主图标题;添加风险表后,标题向左偏移。
处理步骤
在主图中添加 annotation_custom() 和 grid::textGrob(),将 y 轴标题放在绘图区左侧。使用 coord_cartesian(clip = "off") 允许文字显示在绘图区外,再通过 labs(y = NULL) 隐藏原标题:
fit |>
ggsurvfit(type = "risk", linetype_aes = TRUE) +
annotation_custom(
grid::textGrob(
x = grid::unit(0, "npc") - grid::unit(30, "pt"),
label = "Cumulative incidence",
rot = 90,
vjust = 0
)
) +
coord_cartesian(clip = "off") +
add_risktable(risktable_stats = "{n.risk}") +
scale_color_manual(values = c("black", "#DE9043")) +
scale_linetype_manual(values = c("solid", "dashed")) +
labs(x = "Months", y = NULL)
这里假设 fit 已经是可用于 ggsurvfit() 的拟合对象。代码中的 30 pt 仅作定位示例。标题位置不合适时,可以调整这个值,并在最终导出的图像尺寸下检查效果。
注意事项
annotation_custom() 通过手动定位添加文字,不会改变 ggplot 的 y 轴标题布局。标题长度、字号、图形宽度或导出尺寸变化后,可能需要重新调整偏移量。原问题没有提供完整的初始绘图代码和可复现数据,因此示例沿用了后续补充的 fit、风险表和标签设置。实际使用时,还应检查文字是否被裁切或与风险表重叠。
相关问题答复及示例:Stack Overflow:ggsurvfit + add_risktable 后 y 轴标题偏移。
备注:内容仅供参考。
