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

如何修改ggsurvplot中自定义生存中位数表格的外观?

问题:调整ggsurvplot中生存中位数表格的背景为白色

我在R中用以下代码给ggsurvplot添加了一个展示生存中位数的自定义表格,但表格默认是灰色主题(类似theme_gray()),想改成简洁的白色表格:

library(survival)
library(survminer)
library(ggpp)

# 加载肺癌生存数据
lung <- lung

surv_object <- Surv(lung$time, lung$status)
survfitobj <- survfit(surv_object ~ lung$sex)

km_plot <- ggsurvplot(survfitobj, data = lung)

# 添加自定义表格
median_df <- as.data.frame(surv_median(survfitobj))

km_plot$plot <- km_plot$plot + ggpp::annotate(geom = "table", x = max(km_plot$data.survplot$time), y = 1.0, label = list(median_df))
km_plot
解决方案

通过给ggpp::annotate()的table.theme参数指定白色主题即可实现,具体有两种方式:

方式1:使用内置的theme_bw()主题

直接调用ggplot的theme_bw()作为表格主题,它会自动设置白色背景:

library(survival)
library(survminer)
library(ggpp)

lung <- lung

surv_object <- Surv(lung$time, lung$status)
survfitobj <- survfit(surv_object ~ lung$sex)

km_plot <- ggsurvplot(survfitobj, data = lung)

median_df <- as.data.frame(surv_median(survfitobj))

# 修改annotate参数,添加table.theme
km_plot$plot <- km_plot$plot + 
  ggpp::annotate(geom = "table", 
                 x = max(km_plot$data.survplot$time), 
                 y = 1.0, 
                 label = list(median_df),
                 table.theme = ggplot2::theme_bw())  # 指定白色主题
km_plot

方式2:自定义极简白色主题

如果需要更简洁的样式(比如去掉网格线),可以自定义theme:

library(survival)
library(survminer)
library(ggpp)

lung <- lung

surv_object <- Surv(lung$time, lung$status)
survfitobj <- survfit(surv_object ~ lung$sex)

km_plot <- ggsurvplot(survfitobj, data = lung)

median_df <- as.data.frame(surv_median(survfitobj))

# 自定义白色表格主题
custom_table_theme <- ggplot2::theme(
  panel.background = ggplot2::element_rect(fill = "white"),
  strip.background = ggplot2::element_rect(fill = "white"),
  panel.grid = ggplot2::element_blank()
)

km_plot$plot <- km_plot$plot + 
  ggpp::annotate(geom = "table", 
                 x = max(km_plot$data.survplot$time), 
                 y = 1.0, 
                 label = list(median_df),
                 table.theme = custom_table_theme)
km_plot

关键说明

ggpp::annotate()的table.theme参数接受ggplot的theme对象,通过指定白色背景的theme,就能覆盖默认的灰色主题,让表格变成简洁的白色样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:58:54