Несколько ggplots напечатаны на одной странице в Knitr - PullRequest
0 голосов
/ 30 августа 2018

Незначительные вариации этого вопроса много раз появлялись, но, похоже, ни один из них не помог мне с моими заговорами.

Я использую survminer::ggsurvplot для графиков выживания в R и хочу скомпилировать код knitr в pdf. У меня есть 6 графиков, поэтому я хотел бы отобразить их в 2 столбцах на одной странице. Мой код выглядит так (минус 2 графика для экономии места):

<<echo=FALSE, fig=TRUE,out.width = ".45\\textwidth", fig.ncol=2>>=

# Overall Survival for each marker
fit.DFS.AR <- survfit(Surv(TNBC1$DF.time, TNBC1$DFS)  ~ TNBC1$AR.bin,
           data = TNBC1)
fit.DFS.CK <- survfit(Surv(TNBC1$DF.time, TNBC1$DFS)  ~ TNBC1$CK.bin,
           data = TNBC1)
fit.DFS.Cla <- survfit(Surv(TNBC1$DF.time, TNBC1$DFS)  ~ TNBC1$Cla.bin,
           data = TNBC1)
...
# Visualize with survminer
plot.arDF <- print(ggsurvplot(fit.DFS.AR, data = TNBC1 , risk.table = F, xlim = c(0, 60),
       #surv.median.line = "hv",
       xlab="Time (months)", ylab="Overall Survival Probability") +   ggtitle("AR") )
plot.ckDF <- print(ggsurvplot(fit.DFS.CK, data = TNBC1 , risk.table = F, xlim = c(0, 60),
       #surv.median.line = "hv",
       xlab="Time (months)", ylab=" Overall Survival Probability") + ggtitle("CK") )
plot.claDF <- print(ggsurvplot(fit.DFS.Cla, data = TNBC1 , risk.table = F, xlim = c(0, 60),
       #surv.median.line = "hv",
       xlab="Time (months)", ylab=" Overall Survival Probability") + ggtitle("Claudin1") )
...
gridExtra::grid.arrange(plot.arDF$plot + theme(plot.title = element_text(hjust = 0.5)),
    plot.ckDF$plot + theme(plot.title = element_text(hjust = 0.5)),
    plot.claDF$plot + theme(plot.title = element_text(hjust = 0.5)),                     
    ncol=2, nrow=3)

Результатом является один столбец цифр, которые покидают страницу. Есть ли способ собрать 5 графиков на одной странице, не переключаясь на rmd? Я также пробовал чертить без меток и без grid.arrange.

1 Ответ

0 голосов
/ 30 августа 2018

survminer, по-видимому, имеет собственную функцию упорядочивания arrange_ggsurvplots, которую можно использовать для упорядочивания нескольких ggsurvplots на одной странице.

# Fit survival curves
require("survival")
fit<- survfit(Surv(time, status) ~ sex, data = lung)

# List of ggsurvplots
require("survminer")
splots <- list()
splots[[1]] <- ggsurvplot(fit, data = lung, risk.table = TRUE,
                          ggtheme = theme_minimal())
splots[[2]] <- ggsurvplot(fit, data = lung, risk.table = TRUE,
                          ggtheme = theme_grey())

# Arrange multiple ggsurvplots and print the output
arrange_ggsurvplots(splots, print = TRUE,
                    ncol = 2, nrow = 1, risk.table.height = 0.4)

## Not run: ------------------------------------
# # Arrange and save into pdf file
# res <- arrange_ggsurvplots(splots, print = FALSE)
# ggsave("myfile.pdf", res)
## ---------------------------------------------

enter image description here

Подробности можно найти по адресу: http://www.sthda.com/english/rpkgs/survminer/reference/arrange_ggsurvplots.html.

...