向ggsurvplot添加新的自定义表

krugob8w  于 2023-03-15  发布在  其他
关注(0)|答案(1)|浏览(248)

我想添加一个表格到KM图的右上角survminer::ggsurvplot()。我已经创建了KM图和中位数、HR和p值的统计数据,但不知道如何添加创建一个漂亮的表格添加到图中,如果可能的话。以下是我到目前为止的代码。

library(survival)
library(lubridate)
library(ggsurvfit)
library(gtsummary)
library(tidycmprsk)
library(condsurv)

# stats for number of events and median survival time with 95% CI
km <- survfit(Surv(time, status) ~ sex, data = lung)

# stats for hr and p-value
hr <- coxph(Surv(time, status) ~ sex, data = lung) 
  
# plot to add custom table to upper right corner, while keeping the risk table
p <- ggsurvplot(km, risk.table = T, risk.table.col = c('sex'), 
                risk.table.height = 0.25, ggthem = theme_light(),
                xlab = 'Time',  break.time.by = 20, 
                risk.table.y.text = F, risk.table.y.text.col = T, risk.table.title="Number at risk", 
                ggtheme = theme_classic()) 

p

要添加到右上角的表,其布局与此图顶部的布局类似。

fykwrbwg

fykwrbwg1#

下面是一个使用ggpp::annotate()的解决方案,我使用了生存包中内置的“lung”数据库:

### Loading the libraries
library(ggsurvfit)
library(survival)
library(survminer)
library(ggplot2)
library(ggpp)

### Generating the table
df <- data.frame(col1 = 1:3, col2 = c("one", "two", "three"))

### Plotting the KM survival
fit <- survfit(Surv(time, status) ~ sex, data = lung)
p <- ggsurvplot(fit, data = lung) 

### Adding your table to the ggsurvplot item
p$plot + ggpp::annotate(geom = "table", x = 700, y = 0.9, label = list(df))

注意,要获得表的确切位置,必须在annotate()中使用xy参数。

相关问题