Свернуть подзаголовок с bquote в ggplot2

#r #ggplot2 #survival-analysis

Вопрос:

Я пытаюсь изменить свой подзаголовок так, чтобы он гласил «Все темы, рассматриваемые в 5×10^7 TCID50», с надстрочным индексом 7 и подстрочным индексом 50.

Я смог запустить следующий график, где есть пробелы («5 x 10»):

Примерный Сюжет

Со следующим кодом:

 kmcurve1 <- ggsurvplot(km_p1p2_p2dose_fit, 
              palette = c("#202960", "#8CC63E"), 
              xlab = "Time (Months)", 
              legend.labs = c("Phase 1", "Phase 2"), 
              break.time.by = 6, 
              xlim = c(0,36), 
              conf.int = FALSE, 
              pval = TRUE, 
              pval.size = 5, 
              pval.method.size = 5, 
              pval.coord = c(30,0.9), 
              pval.method.coord = c(30,1), 
              pval.method = TRUE, 
              surv.median.line = "v", 
              risk.table = "abs_pct", 
              risk.table.col = "strata", 
              surv.plot.height = 2, 
              risk.table.height = 0.24, 
              censor.shape = "|", 
              censor.size = 5, 
              font.title = 28, 
              font.x = 14, 
              font.y = 14,
              font.tickslab = 12,
              risk.table.fontsize = 3.5)

kmcurve1$plot <- kmcurve1$plot  
  labs(title = "Overall Survival for Phase 1 and Phase 2",
       subtitle = bquote(All~Subjects~as~Treated~at~5.0~x~10^7~TCID[50]),
        caption = bquote(TCID[50]~-~Median~Tissue~Culture~Infectious~Dose))  
        theme(#text = element_text(family = "serif"), #only run for PDF output
              plot.title = element_text(size = 20), 
              plot.subtitle = element_text(size = 16), 
              plot.caption = element_text(size = 12),
              legend.text = element_text(size = 12), 
              legend.title = element_text(size = 12), 
              legend.key.size = unit(16, "points"), 
              axis.title.x = element_text(size = 14), 
              axis.title.y = element_text(size = 14),
              axis.text.x = element_text(size = 12), 
              axis.text.y = element_text(size = 12))

kmcurve1
 

Я удалил номера исследований, чтобы избежать получения идентифицирующей информации.

Для подзаголовка я также попробовал bquote(All~Subjects~as~Treated~at~5.0x10^7~TCID[50]) , что дает мне следующее сообщение об ошибке:

Ошибка: неожиданный символ в: «лаборатории(заголовок = «Общая выживаемость для фазы 1 и фазы 2″, подзаголовок = bquote(Все~Субъекты~как~Обработанные~в~5.0×10»

Дайте мне знать, будет ли полезно иметь повторную подгонку КМ, чтобы воспроизвести кривую.

Ответ №1:

Единственное, чего вам не хватало, — это необходимости использовать звездочку для разделения маркеров в выражении, когда вы не хотите, чтобы между ними появлялся пробел. Маркер не может начинаться с цифры, поэтому ваш аргумент выражения должен был быть:

   bquote(All~Subjects~as~Treated~at~5.0*x*10^7~TCID[50])
 

Используя пример Ксилиама, поскольку в нем гораздо меньше материала, не относящегося к вопросу. И я использовал эту функцию expression , так как вы не подставляли значения или не получали доступ к ним из вызывающей среды.

 library(survminer)
library(survival)

fit<- survfit(Surv(time, status) ~ sex, data = lung)
p <- ggsurvplot(fit, data = lung)

p$plot  
    labs(title = "Overall Survival for Phase 1 and Phase 2",
         subtitle = expression(
            All~Subjects~as~Treated~at~5*x*10^7~TCID[50]),
         caption = expression(
            TCID[50]~-~Median~Tissue~Culture~Infectious~Dose))
 

Дает:

введите описание изображения здесь

Ответ №2:

Одним из подходов к отображению подзаголовка без пробелов вокруг » x «было бы заменить часть вашего математического выражения строкой «5×10». bquote умеет комбинировать математические выражения со строками. Вот ваш подзаголовок, представленный в воспроизводимом сюжете.

 library(survminer)
library(survival)

fit<- survfit(Surv(time, status) ~ sex, data = lung)
p <- ggsurvplot(fit, data = lung)

  p$plot  
  labs(title = "Overall Survival for Phase 1 and Phase 2",
       subtitle = bquote(All~Subjects~as~Treated~at~'5x10'^7~TCID[50]),
       caption = bquote(TCID[50]~-~Median~Tissue~Culture~Infectious~Dose))
 

Комментарии:

1. Спасибо @xilliam! Это сработало как заклинание. Я не bquote часто использую . Я поиграл с первой частью и установил ее в виде единственной символьной строки, которая также работала: subtitle = bquote('All Subjects as Treated at 5.0x10'^7~TCID[50]),

2. Я полагаю, что подвергаться bquote воздействию-это хорошо, но вы могли бы так же легко использоваться expression для этих приложений. Реальная ценность bquote заключается в том, чтобы разрешить замену вычисленных под-выражений.