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

