我在RStudio中使用surv_miner构建的Kaplan Meier曲线有以下风险表:
我想将风险表中的文本换行,以便数字位于顶部,百分比(括号内)位于数字下方的另一行,以便它们都适合表格。我尝试使用stringr包,但我不太清楚如何将其合并到主题中。任何帮助,将不胜感激。我发布了我的代码,因为添加实际的生存数据有点棘手。但是,如果需要实际数据,我会发布一些虚拟数据。提前谢谢。
require("survival")
require("ggplot2")
require("survminer")
fit <- survfit(Surv(Time, Survival) ~ Gender_bin, data = d)
ggsurvplot(fit,
data = d,
pval = TRUE,
legend.title = "Gender", legend.labs = c("Male", "Female"),
xlab="Time (years)", ylab="Survival",
ggtheme =
theme_bw() +
theme(plot.title = element_text(hjust = 0.5, face = "bold")) +
theme(axis.text=element_text(size=14), axis.title=element_text(size=16), axis.title.x=element_blank()) +
theme(legend.background = element_rect(fill="gray95", size=.5),
legend.text=element_text(size=14), legend.title=element_text(size=14)) +
theme(aspect.ratio=1),
xlim = c(0,10),
break.time.by = 2.5,
legend = c(0.9,0.8),
risk.table = "abs_pct",
fontsize = 3.5,
tables.theme = theme_bw() + theme(aspect.ratio = 0.14) +
theme(axis.text=element_text(size=14), axis.title=element_text(size=14)) +
theme(axis.title.y=element_blank()) +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()))
surv_median(fit)$median
答案 0 :(得分:1)
得到一些黑客显然工作。决定使用您在ggsurvplot
的示例部分中使用的数据集提供的代码。搜索了一个打印括号中的数字和百分比的部分。看着:
? ggsurvtable # the help page
ggsurvtable # the code
# noticed a call to .plot_survtable(...) assumed it was not exposed for viewing
getAnywhere(.plot_survtable)
# found a section that looked like it would do the work:
else if (survtable == "risk.table") {
pct.risk <- abs_pct.risk <- n.risk <- NULL
llabels <- switch(risk.table.type, percentage = round(survsummary$n.risk *
100/survsummary$strata_size), abs_pct = paste0(survsummary$n.risk,
" (", survsummary$pct.risk, ")"), nrisk_cumcensor = paste0(survsummary$n.risk,
" (", survsummary$cum.n.censor, ")"), nrisk_cumevents = paste0(survsummary$n.risk,
" (", survsummary$cum.n.event, ")"), survsummary$n.risk)
survsummary$llabels <- llabels
mapping <- aes(x = time, y = rev(strata), label = llabels,
shape = rev(strata))
}
然后我复制了代码并在每个代码前面分配了一个带有“\ n”而不是“”的编辑版本“(”因为计数是第一个而pct是第二个。
.plot_survtable <-
# the copied and modified code went here
然后我尝试分配正确的环境:
environment(.plot_survtable) <- environment(ggsurvplot)
测试。无法按预期执行,因此检查了环境分配,发现我可能需要使用assignInNamespace
代替environment<-
:
getAnywhere(.plot_survtable)
#2 differing objects matching ‘.plot_survtable’ were found
#in the following places
# .GlobalEnv
# namespace:survminer
#Use [] to view one of them
?assignInNamespace # to check the argument list and their types
assignInNamespace('.plot_survtable', .plot_survtable, "survminer" )
再次测试,现在声称成功!!
因为我使用了一个具有不同时间尺度(天或月)的对象,因此我使用了您的代码(以年为单位)来限制。