如何在R的survminer包中用ggsurvplot将风险表分组名设为全黑
解决ggsurvplot风险表分组名称统一设为黑色的问题
报错原因
你之前修改axis.text.y时出现冲突,是因为风险表的分组名称默认通过aes(color = 分组变量)绑定了生存曲线的分组颜色,直接用theme修改文本颜色会和这个颜色映射冲突,导致主题合并失败。
解决方案
利用ggsurvplot的内置参数关闭分组标签的颜色绑定,再统一设置文本颜色即可,具体步骤如下:
修改后的完整代码
surv_pfs <- ggsurvplot(data = data, fit = fit_os, xlab = "Time in Months", risk.table = TRUE, size = 0.2, censor.size = 3, legend.title = "Group", tables.theme = clean_theme(), title = "OS by group", ylab = "Survival Probability", break.time.by = 12, risk.table.title = "Number at Risk", risk.table.col = "black", # 设置风险表内数字为黑色 risk.table.height = 0.2, risk.table.y.text = TRUE, risk.table.y.text.col = FALSE, # 关键:关闭分组标签与分组颜色的绑定 censor.shape = "l", linetype = c(1,1,1,1), pval = FALSE, ggtheme = custom_theme(), legend.labs = c("group1","group2", "group3", "group4"), palette = c("black", "#8c8c8c", "#4b4b4b", "#bebebe")) # 调整主图图例样式 surv_pfs$plot <- surv_pfs$plot + theme(legend.position = c(0.5,0.7), legend.text = element_text(size=8), legend.title = element_text(size=8)) # 调整风险表样式,此时可正常设置分组名称为黑色 surv_pfs$table <- surv_pfs$table + theme(plot.title = element_text(hjust=0, size=14), plot.margin = margin(l=0), axis.text.y = element_text(color = "black", size=14), # 可选:确保风险表所有文本都为黑色 text = element_text(color = "black")) # 输出图形 surv_pfs
原理说明
risk.table.y.text.col = FALSE:该参数默认是TRUE,会让分组标签继承对应生存曲线的颜色;设为FALSE后,分组标签的颜色会遵循theme中axis.text.y的设置,不再绑定分组颜色。risk.table.col = "black":确保风险表内的数字(风险人数)显示为黑色。
内容的提问来源于stack exchange,提问作者math1234567890
相关产品推荐
相关产品推荐

