如何使用ggsurvplot在R survminer包中将风险表中的组名称的颜色更改为全黑?

c0vxltue  于 2023-06-03  发布在  其他
关注(0)|答案(2)|浏览(194)

我正在使用survminer包和ggsurvplot进行生存图。我正在使用该选项来获取风险表(即risk_table = T)。风险表立即输出存活图中每个组的行。风险表的每个标签都是生存图中组的颜色。我希望整个风险表都是黑色的,甚至包括风险表中每行的组名称。有什么简单的方法吗?
我试着做了如下的事情:

surv_pfs=ggsurvplot(data = data, fit=fit_os,xlab="Time in Months",
                     risk.table=T, 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 = T,  
                      censor.shape="l", linetype = c(1,1,1,1),  pval = F,
                      ggtheme = custom_theme(),
                      legend.labs=c("group1","group2", "group3", "group4"),
                      palette = c("black", "#8c8c8c", "#4b4b4b", "#bebebe"))
surv_pfs
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)
                                    )**

其中粗体部分是我试图使风险数字表中的group1、2、3和4都是黑色行,而不是默认的文本颜色。我得到一个错误,说“合并'axis.text.y'主题元素时出现问题。
如果没有这个错误,我得到的结果看起来像下面这样:

我想要的是G1、G2、G3和G4都是黑色文本。

k3bvogb1

k3bvogb11#

问题是ggsurvplot使用ggtext::element_markdown作为axis.text。这就是为什么你在使用element_text时会出错的原因。
使用基于lung数据集的最小可重现示例:

library(survminer)
library(survival)

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

surv_pfs <- ggsurvplot(fit,
  data = lung, xlab = "Time in Months",
  risk.table = T, 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 = T,
  censor.shape = "l", linetype = c(1, 1, 1, 1), pval = F,
  legend.labs = c("group1", "group2"),
  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 = ggtext::element_markdown(color = "black", size = 14)
)

surv_pfs

hs1rzwqc

hs1rzwqc2#

这样反而有效:

surv_pfs$table$theme$axis.text.y$colour <- "black"

相关问题