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

如何调整arrange_ggsurvplots的多幅Kaplan-Meier图排版与格式?

解决多幅Kaplan-Meier曲线排版拥挤的方案

一、指定足够大的输出尺寸

导出图片时直接设置合适的宽高与分辨率,避免因画布过小导致元素挤压:

# 假设组合后的图对象为combined_plot
ggsave("combined_km_plots.pdf", combined_plot, width = 16, height = 12, dpi = 300)
# 导出为png格式
ggsave("combined_km_plots.png", combined_plot, width = 16, height = 12, dpi = 300)

宽高可根据子图数量调整:比如3行2列的布局,可将height设为14;2行3列则把width设为18。

二、提前调整单个KM图的元素大小

生成每个ggsurvplot时,单独设置字体、图例、坐标轴的尺寸,从源头避免子图内部拥挤:

km_plot1 <- ggsurvplot(
  fit = survfit_object1,
  data = your_data,
  font.main = c(12, "bold"),    # 标题字体大小与样式
  font.x = c(10, "plain"),      # X轴标签大小
  font.y = c(10, "plain"),      # Y轴标签大小
  font.tickslab = c(8, "plain"),# 刻度标签大小
  legend.title = c(10, "bold"), # 图例标题大小
  legend.text = c(8, "plain"),  # 图例文字大小
  ggtheme = theme_bw(base_size = 10) # 全局基础字体尺寸
)

三、优化arrange_ggsurvplots的布局参数

通过行列数、间距、子图占比等参数调整整体排版:

combined_plot <- arrange_ggsurvplots(
  list(km_plot1, km_plot2, km_plot3, km_plot4),
  ncol = 2, nrow = 2,
  heights = c(1, 1),  # 两行的相对高度,可按需调整为c(1.2, 0.8)这类比例
  widths = c(1, 1),   # 两列的相对宽度
  gap = 0.5,          # 子图间的间距,数值越大间距越宽
  labels = c("A", "B", "C", "D"), # 添加A/B/C/D标签
  label.position = "top.left",    # 标签位置,可选top.right、bottom.left等
  label.font = c(14, "bold")      # 标签的字体大小与样式
)

四、精简图例占用空间

若图例过于臃肿,可调整位置或样式:

# 将图例移至底部横向排列
km_plot1 <- ggsurvplot(
  fit = survfit_object1,
  legend = "bottom",
  legend.labs = c("Group 1", "Group 2"), # 简化图例文字
  shorten.legend.labs = TRUE # 自动缩短过长的图例文本
)

# 重复图例仅保留一个,其余子图隐藏图例
km_plot2$plot <- km_plot2$plot + theme(legend.position = "none")
km_plot3$plot <- km_plot3$plot + theme(legend.position = "none")

五、调整整体图的边距与字体

在组合后的图上统一设置边距与全局字体,进一步优化可读性:

combined_plot <- combined_plot + theme(
  text = element_text(size = 10),
  plot.margin = margin(10, 10, 10, 10, "mm") # 增加整体图的外围边距
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:20:47