Добавление оси времени под графиком нескольких графиков ggsurvplots - PullRequest
0 голосов
/ 16 июня 2020

У меня есть 3 ggsurvplots , которые объединены и упорядочены с помощью range_ggsurvplots () в 1 столбце. Я хочу добавить ось времени под окончательным графиком. Я попробовал 2 способа:

  • В первом подходе я покрасил ось x первых двух таблиц рисков в белый цвет, чтобы размер графика оставался одинаковым. Результат почти хороший, недостатком является то, что между графиками есть промежутки, а также промежутки между значениями страт.

  • Во втором подходе я делаю ось x таблиц рисков. как element_blank () и попытайтесь добавить новый ggsurvplot с осью x внутри. Однако эта фигура имеет такой же размер, что и другие, и поэтому не является хорошим представлением.

Вот макет, который мне нужен

Вот пример моего кода:

require(survival)
km = survfit(Surv(time, status) ~ sex, data=lung)
p = ggsurvplot(
    km,
    ########## plot #########,
    size  = 3,
    fun="event",
    xlab = "",                                  
    legend = 'none',
    legend.labs = c("Control", "Intervention"),         
    ylab = 'Cumumative probability of',
    font.tickslab = c(14, "plain", "black"),
    ########## sensor #########
    censor.size = 0.5,
    censor.shape = '|',
    ########## risk table #########
    risk.table = TRUE,
    risk.table.y.text.col = T,
    risk.table.title = "",
    risk.table.height = 0.19,
    palette = c('#5dbcd2','#f54800')
)
########## risk table #########,
p$table = p$table + labs(x = NULL
                        ,y = NULL
                        ,title = NULL
                        ,subtitle = NULL) + theme(axis.line.y = element_blank()
                                                 ,axis.line.x = element_blank()
                                                 ,axis.text.x.bottom = element_blank()
                                                 ,axis.text.x.top = element_blank()
                                                 ,axis.text.y.left = element_text(hjust = 1, size = 14, face = 'bold', family = 'serif'))
p$table =  ggpar(p$table, ticks = FALSE)

########## plot #########,
p$plot = p$plot + labs(x = NULL
                      ,y = 'Cumulative probability of'
                      ,title = 'TITLE') + theme(axis.line.y = element_line(size = 0.5, colour = "black")
                                                   ,axis.line.x = element_line(size = 0.5, colour = "black")
                                                   ,axis.title.y.left = element_text(hjust = 0.5, vjust = -6, size = 16, family = 'serif')
                                                   ,axis.text.x.bottom = element_blank()
                                                   ,plot.title = element_text(hjust = 0.5, size = 16, family = 'serif'))
p$plot =  ggpar(p$plot, 
                 font.xtickslab = c(13, "plain", "black"),
                 font.ytickslab = c(13, "plain", "black"))
require(gridExtra)
jpeg("Figure.jpg",1920*1.1,1080*3*1.1,res=250)
splots <- list()
splots[[1]] <- p
splots[[2]] <- p 
splots[[3]] <- p 
# Arrange multiple ggsurvplots and print the output
arrange_ggsurvplots(splots, print = TRUE,
  ncol = 1, 
  nrow = 3,
)

Спасибо за ваше время, и я с нетерпением жду вашего чтения. Это определенно полезное представление !!!

С уважением,

Хай

...