The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

Themes

Plot Themes

Both ggsurvfit() and ggcuminc() use theme_ggsurvfit_default() as the default {ggplot2} theme, which is similar to ggplot2::theme_bw(). While this theme provides beautiful figures, you may want to modify it.

You can use the ggsurvfit(theme=) argument to change the default theme. You can pass any {ggplot2} theme to this argument, or simply add a theme using typical {ggplot2} syntax.

library(ggsurvfit)
#> Loading required package: ggplot2
library(patchwork)

gg_theme_default1 <- 
  survfit2(Surv(time, status) ~ surg, data = df_colon) %>%
  ggsurvfit(theme = theme_ggsurvfit_default()) +
  labs(title = "Using `theme=` argument")

gg_theme_default2 <- 
  survfit2(Surv(time, status) ~ surg, data = df_colon) %>%
  ggsurvfit(theme = NULL) +
  theme_ggsurvfit_default() +
  labs(title = "Using ggplot `+`")

gg_theme_default1 + gg_theme_default2

As you can see, either method of passing the theme results in an identical figure. You can easily apply any user-created theme or any theme that exported with the ggplot2 package. To construct a custom theme, include ggplot2 calls in a list as in the example below.

survfit2(Surv(time, status) ~ surg, data = df_colon) %>%
  ggsurvfit(theme = list(theme_classic(), theme(legend.position = "top"))) +
  labs(title = "Custom Plot Theme")

Risk Table Themes

Similar to the plots above, the risk tables also come with a default theme. To understand how to use risk table themes, one must first understand what a risk table is. Each risk table that is placed below a plot is itself a ggplot created with ggplot2::geom_text().

Unlike the plot themes, the risk table themes can only be passed via add_risktable(theme=).

survfit2(Surv(time, status) ~ surg, data = df_colon) %>%
  ggsurvfit() +
  add_risktable(
    risktable_stats = "n.risk",
    theme = theme_risktable_default()
  )

A typical theme appropriate for a risk table plot will remove grid lines and provide a clean area to display the numbers at risk. In the risk table above, the strata levels are y-axis labels, and “At Risk” is the plot title.

Another risk table theme adds a box around the statistics presented.

survfit2(Surv(time, status) ~ surg, data = df_colon) %>%
  ggsurvfit() +
  add_risktable(
    risktable_stats = "n.risk",
    theme = theme_risktable_boxed()
  )

It’s possible to replace the stratum levels with a symbol, which is particularly helpful when you have long group labels.

survfit2(Surv(time, status) ~ surg, data = df_colon) %>%
  ggsurvfit() +
  add_risktable(risktable_stats = "n.risk") +
  add_risktable_strata_symbol()

When customizing the risk table themes and using add_risktable_strata_symbol(), note that the symbol is added with ggplot2::scale_y_discrete(); including a theme that uses the discrete y scale could cause a conflict.

If you need a risk table theme that is not currently available in ggsurvfit, community-based themes are welcome! Consider adding your theme to the package.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.