Home > front end >  How to edit ticks and tick labels in ggusrvplot, like in ggplot2?
How to edit ticks and tick labels in ggusrvplot, like in ggplot2?

Time:06-27

I want to only have labels every second number, but have the small ticks for every number in my graph. As you can see in the figure I added, the labels are every 2nd tick on the X-axis.Every second tick

But I want to achieve the result that's on the Y-axis:

Every tick

With ggplot, this is possible with ggh4x and if_elfse. But I can't find a way how to do this in ggsurvplot. This is my code, for the first picture. The code for the second picture is found here: Code 2

ggsurvplot(fit, data = d, 
            conf.int = F,
            censor = F,
            palette = c("green", "purple", "red"),
            legend.labs = c("Reference water (pH 7.3)\n(N = 66)", 
                            "Acidic al-poor (pH 5.8)\n(N = 66)",
                            "Acidic al-rich (pH 5.8)\n(N = 66)"),
            legend.title = "Water quality",
            xlab = "Days",
            xlim = c(1,23),
            break.time.by = 2
            )

Thank you in advance for yor help.

CodePudding user response:

As ggsurvplot returns a list containing the plot as a ggplot2 object you could achieve your desired result using ggh2x by overriding the x scale as in the example code by @tjebo from Adding minor tick marks to the x axis in ggplot2 (with no labels).

Making use of the default example from ?ggsruvplot:

library(survminer)
library(survival)
library(ggh4x)

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

p <- ggsurvplot(fit, data = lung,  main = "Survival curve",
                xlab = "Days",
                xlim = c(1,23))

p$plot  
  scale_x_continuous(minor_breaks = seq(0, 24, 1), breaks = seq(0, 24, 2), guide = "axis_minor")  
  theme(ggh4x.axis.ticks.length.minor = rel(1))
#> Scale for 'x' is already present. Adding another scale for 'x', which will
#> replace the existing scale.

  • Related