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

