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

如何调整ggsurvplot中risk.table的数字字体大小?

解决ggsurvplot风险表数字字号调整问题

问题出在risk.table.fontsize的逻辑上——它不是直接设置绝对字号(比如pt),而是相对缩放比例,和你设置的risk.table.height绑定,所以直接设20会让文字大到溢出表格,完全没法看。要精准设置数字为20号且不改动标题字号,直接通过tables.theme的元素调整即可:

修改后的完整代码:

library(survminer)
library(survival)

data(lung)
fit <- survfit(Surv(time, status) ~ sex, data = lung)

p <- ggsurvplot(
  fit,  
  size = 1,  
  legend.labs = c("A", "B"),
  ylim = c(0, 1),
  linetype = "strata", 
  break.time.by = 365, 
  palette = c("#E7B800", "#2E9FDF"), 
  risk.table = TRUE,
  risk.table.title = "No. at risk",
  risk.table.height = 0.2,
  # 关键修改:单独指定表格内容(数字)的字号,保留标题字号
  tables.theme = theme_cleantable() + 
    theme(
      plot.title = element_text(size = 40), # 风险表标题字号不变
      table.text = element_text(size = 20)  # 设置风险表内数字的字号为20
    )
)
p$plot <- p$plot +
  theme(
    text = element_text(size = 20),  
    axis.text.y = element_text(size = 20),
    axis.text.x = element_text(size = 20),
    axis.text = element_text(size = 20), 
    legend.text = element_text(size = 20)  
  )

# 查看最终图
print(p)

关键说明:

  • table.text是survminer专门用于控制风险表内容(包括数字)的theme元素,直接设置size=20就是绝对字号,不会受缩放比例影响
  • 原来的plot.title设置保留,确保风险表标题还是40号
  • 不需要再用risk.table.fontsize参数,或者保持默认值1即可,避免干扰theme的设置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:52:38