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
相关产品推荐
相关产品推荐

