# survival plot survPlot <- function (data) { surv_data <- data %>% filter(IDH_codel.subtype == "IDHwt") %>% # select only IDH wildtype dplyr::select(survival_months,vital_status,FOSL1) %>% # mutate(cutoff_group = ifelse(FOSL1 >= quantile(FOSL1, probs=c(0.30, 0.5, 0.7), na.rm = TRUE)[3],"high","low")) mutate(cutoff_group = case_when(FOSL1 >= quantile(FOSL1, probs=c(0.30, 0.5, 0.7), na.rm = TRUE)[3] ~ "high", FOSL1 <= quantile(FOSL1, probs=c(0.30, 0.5, 0.7), na.rm = TRUE)[1] ~ "low")) surv_data <- na.omit(surv_data) my.Surv <- with(surv_data,Surv(time = survival_months, event = vital_status == 1)) expr.surv <- survminer::surv_fit(my.Surv ~ cutoff_group, data = surv_data) smax <- max(surv_data[ ,"survival_months"], na.rm = TRUE) tmax <- smax-(25*smax)/100 xmax <- (90*tmax)/100 log.rank <- survdiff(my.Surv ~ cutoff_group, rho = 0, data = surv_data) mantle.cox <- survdiff(my.Surv ~ cutoff_group, rho = 1, data = surv_data) surv <- data.frame(summary(expr.surv)$table) model <- summary(coxph(my.Surv ~ cutoff_group, data=surv_data)) HR <- round(model$conf.int[1],2) HR.lower <- round(model$conf.int[3],2) HR.upper <- round(model$conf.int[4],2) log.rank.p <- round(1 - pchisq(log.rank$chi, df = 1), 6) mantle.cox.p <- round(1 - pchisq(mantle.cox$chi, df = 1), 6) star.log <- weights::starmaker(log.rank.p) star.mcox <- weights::starmaker(mantle.cox.p) legend.labs = c(sprintf("%s High \n(n=%s, median=%s)", "FOSL1", surv$records[1], surv$median[1]), sprintf("%s Low \n(n=%s, median=%s)", "FOSL1", surv$records[2], surv$median[2])) surv_plot <- survminer::ggsurvplot(fit = expr.surv, censor = F, conf.int = F, legend = c(0.55,0.9), surv.scale = "percent", ylab = "Surviving", xlab = "Survival time (Months)", legend.labs = legend.labs, legend.title = "", xlim = c(0,smax), font.legend = 8, risk.table = F, palette = "Set1", ggtheme = theme_classic(), risk.table.y.text = F, risk.table.y.text.col = T, risk.table.height = 0.4, data = surv_data) surv_plot$plot <- surv_plot$plot + annotate("text", x = xmax, y = c(0.65,0.575,0.505), size = 8/3, label = c(sprintf("HR = %s, (%s - %s)",HR, HR.lower, HR.upper), sprintf("%s Log-rank p value= %s", star.log, log.rank.p), sprintf("%s Wilcoxon p value= %s",star.mcox, mantle.cox.p))) surv_plot <- ggpar(surv_plot, font.main = c(10,"black","plain"), font.x = c(10,"black","plain"), font.y = c(10,"black","plain"), font.tickslab = c(8,"black","plain")) surv_plot }