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

R语言rms包:经splines转换的nomogram自定义刻度调整方法

RCS转换后Cox模型Nomogram自定义刻度实现方法

你可以通过两种方式实现0~2区间的自定义刻度添加,具体如下:


方法1:构建Nomogram时直接指定刻度(推荐)

在nomogram()函数中通过at参数直接定义对应变量需要显示的所有刻度值即可,修改后的完整代码如下:

library(rms)
# 下方为你原有示例数据加载代码,可替换为自己的本地数据读取逻辑
data <- source("https://pastebin.com/raw/rGtUSTLz")$value
ddist <- datadist(data)
options(datadist = "ddist") 

fit <- cph(Surv(time, event) ~ rcs(var, 3), data = data, surv = T, x = T, y = T)
surv <- Survival(fit)

# 构建nomogram时指定var的自定义刻度
nomo <- nomogram(fit, 
              fun = list(function(x) surv(times = 10, lp = x), 
                         function(x) surv(times = 30, lp = x),
                         function(x) surv(times = 60, lp = x)), 
              funlabel = paste("c", 1:3), 
              lp = T,
              # 这里自定义var轴的刻度,0~2区间按你需要的步长设置,保留原有超出2的刻度即可
              at = list(var = c(seq(0, 2, by = 0.2), 3, 4, 5, 6))
              )

# 绘制列线图,cex.axis调整刻度标签大小避免重叠
plot(nomo, cex.axis = 0.7)

方法2:手动修改Nomogram对象属性

如果需要调整的是转换后的得分轴、LP线性预测轴的刻度,可以先生成默认nomogram对象,再修改对应属性后绘图:

# 生成默认nomogram对象
nomo <- nomogram(fit, 
              fun = list(function(x) surv(times = 10, lp = x), 
                         function(x) surv(times = 30, lp = x),
                         function(x) surv(times = 60, lp = x)), 
              funlabel = paste("c", 1:3), 
              lp = T)

# 示例:修改LP轴0~2区间的刻度,步长0.2
nomo$lp$at <- c(seq(0, 2, by = 0.2), 2.5, 3, 3.5)
nomo$lp$label <- as.character(nomo$lp$at)

# 示例:修改var变量的得分轴刻度,按需取消注释使用
# nomo$var$points <- c(seq(0, 2, by = 0.2), 3, 4)
# nomo$var$label <- as.character(nomo$var$points)

plot(nomo, cex.axis = 0.7)

常用调整参数

  • 修改seq(0,2,by=0.2)中的by参数可以调整0~2区间的刻度密度
  • 若刻度标签重叠,可缩小cex.axis的取值调整字体大小
  • 可根据你实际的数值范围调整at参数中超出2区间的刻度值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:18:03