You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ggsurvplot中像ggplot2一样自定义刻度与刻度标签?

需求说明

使用ggsurvplot()绘制生存曲线时,需要实现X轴的特殊刻度效果:每个整数对应位置都显示刻度线,但仅每隔一个数值显示刻度标签,而非当前break.time.by=2参数实现的「间隔2个位置才同时出刻度线和标签」的效果。
已知原生ggplot2环境下可以借助ggh4x包配合条件判断实现该效果,但未找到ggsurvplot对应的内置实现方法,当前使用的基础绘图代码如下:

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
            )
实现方法

ggsurvplot()返回的对象本身就包含原生ggplot对象,完全可以直接用ggplot2的语法调整坐标轴,不需要依赖额外扩展包,操作逻辑很简单:

  • 第一步:把原代码里的break.time.by参数从2改成1,让X轴在1-23的每个整数位置都生成刻度线
  • 第二步:单独调整X轴的标签显示规则,只在需要的间隔位置保留标签,其余位置的标签设为空字符串即可。

完整可运行代码如下:

library(survminer)
library(ggplot2)

# 生成基础生存图
surv_p <- ggsurvplot(fit, data = d, 
            conf.int = FALSE,
            censor = FALSE,
            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 = 1 # 所有整数位置都生成刻度
            )

# 调整X轴标签:仅每隔1个刻度显示数值,其余位置隐藏标签
surv_p$plot <- surv_p$plot +
  scale_x_continuous(
    breaks = 1:23,
    # 下面的判断规则如果要从1开始显示标签,就把==0改成==1
    labels = ~ifelse(.x %% 2 == 0, as.character(.x), ""),
    limits = c(1,23)
  )

# 输出图形
print(surv_p)

如果要做出主刻度(带标签)和次刻度(不带标签)的长度区分,可以再加一层主题设置:

surv_p$plot <- surv_p$plot + theme(
  # 主刻度长度设为0.2cm,次刻度长度设为0.1cm,可按需调整数值
  axis.ticks.length.x = unit(c(0.2, 0.1), "cm")
)

内容的提问来源于stack exchange,提问作者asellus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 06:15:38