Я сделал кривую Каплана Мейера с помощью ggsurvplot как таковой:
kaplan_plot365d <- ggsurvplot(kmcurve365d,
conf.int = TRUE,
legend.labs = c('Trop-T normal and Trop-I normal', 'Trop-T elevated and Trop-I normal', "Trop-T elevated and Trop-I elevated"),
legend.title = '',
title = 'Kaplan-Meier Curve for 365-Day Mortality',
xlab = 'Time in Days',
ylab = 'Survival probability', main = 'Kaplan-Meier Model',
ylim=c(min(0.7), max(1)),
xlim=c(min(0), max(366)),
break.time.by = 120,
palette = c('#FDE725FF', "#21908CFF", "#440154FF"),
risk.table = TRUE,
risk.table.y.text = TRUE, fontsize = 4, tables.theme = clean_theme(),
risk.table.title = "Survivors per group") +
guides(colour = guide_legend(nrow = 2))
kaplan_plot365d
Я хотел бы сделать весь фон прозрачным, а затем сохранить его с высоким качеством, чтобы использовать его для плаката.
Я попытался добавить эти строки в функцию ggsurvplot(): но это не работает:
panel.background = element_rect(fill='transparent'), #transparent panel bg
plot.background = element_rect(fill='transparent', color=NA), #transparent plot bg
panel.grid.major = element_blank(), #remove major gridlines
panel.grid.minor = element_blank(), #remove minor gridlines
legend.background = element_rect(fill='transparent'), #transparent legend bg
legend.box.background = element_rect(fill='transparent') #transparent legend panel
Затем я использую этот код, чтобы сохранить его:
grid.draw.ggsurvplot <- function(x){
survminer:::print.ggsurvplot(x, newpage = FALSE)}
ggsave("Kaplan-Meier_365d_withCI_Troponine.jpg",
path = ("I:\\Personal\\Poster/"),
plot = kaplan_plot365d,
dpi = 300)
Может ли кто-нибудь помочь мне сделать фон прозрачным?
Спасибо!
Не могли бы вы поделиться некоторыми воспроизводимыми данными, используя dput?
@AndyBaxter, это хорошая идея! К сожалению, код не работает, а код, который я пытался добавить, не работает.
@Quinten, извините, но я не нахожу простого способа обобщить мой (тихий большой) фрейм данных. Попробуем объяснить переменные, которые я использую для этой кривой Каплана-Мейера: time365d.death = число от 0 до 366 (день смерти; 366 = прожил более года), t.i_h_l = число от 1 до 3 ( это категории уровней тропонина, которые я сравниваю на кривой КМ). А еще, это код для kmcurve365d: kmcurve365d <- survfit(Surv(time365d.death.2, death_365) ~ t.i_h_l, data=fukno_trop, type='kaplan-meier') Надеюсь, это как-то поможет.
Я думаю, что вижу, как это работает, и тонкости обеспечения того, чтобы все это сочеталось с ggsave, grid.draw и ggsurvplot. Главное, чтобы эти строки находились внутри вызова ggtheme = theme(...) в функции ggsurvplot:
library(survival)
library(survminer)
fit<- survfit(Surv(time, status) ~ sex, data = lung)
surv_plot_out <- ggsurvplot(fit, data = lung,
legend.title = "Sex",
legend.labs = c("Male", "Female"),
conf.int = TRUE,
risk.table = TRUE,
tables.height = 0.2,
tables.theme = theme_cleantable(),
palette = c("#E7B800", "#2E9FDF"),
ggtheme = theme(
panel.background = element_rect(fill='transparent'), #transparent panel bg
plot.background = element_rect(fill='transparent', color=NA), #transparent plot bg
panel.grid.major = element_blank(), #remove major gridlines
panel.grid.minor = element_blank(), #remove minor gridlines
legend.background = element_rect(fill='transparent'), #transparent legend bg
legend.box.background = element_rect(fill='transparent') #transparent legend panel
) # Change ggplot2 theme
)
grid.draw.ggsurvplot <- function(x) survminer:::print.ggsurvplot(x, newpage = FALSE)
Затем сохраните как png, чтобы получить прозрачное изображение:
ggsave("test_survplot.png", surv_plot_out, bg = "transparent")
#> Saving 7 x 5 in image
Результат:
Пробовали сохранить в png? Я не уверен, что JPEG может делать прозрачный фон?