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

R语言竞争风险生存分析中plot函数自动生成图例的去除及legend函数报错解决

解决竞争风险累积发病率图的图例问题

我来帮你解决这两个问题——去掉自动生成的重叠图例,以及修复手动添加图例的报错:

1. 关闭自动生成的图例

你用的plot()函数其实是cmprsk包的plot.cuminc()方法,它默认会自动添加图例(参数legend=TRUE是默认值)。要去掉这个自带的图例,只需要在plot()调用里加上legend=FALSE就可以了:

CompRisk2 <- cuminc(ftime=ADI$time_DeathTxCensor, fstatus=ADI$status, group=ADI$natADI_quart)
cols <- c("darkorange","coral1","firebrick1","firebrick4","lightskyblue","darkturquoise","dodgerblue","dodgerblue4")
par(bg="white")
# 添加legend=FALSE关闭默认图例
plot(CompRisk2, col=cols, xlab="Years", ylab="Probability of Mortality or Transplant", 
     xlim=c(0,10), ylim=c(0,0.6), legend=FALSE)

2. 修复手动添加图例的报错

你之前的报错是因为legend(0,5,...)里的y=5远远超出了你设置的ylim=c(0,0.6)范围,导致绘图参数无效。这里有两种更靠谱的方法添加图例:

方法一:用位置字符串+inset把图例放图外

这种方法更灵活,适合把图例移到绘图区域外避免重叠:

# 在plot之后调用legend
legend("topright", legend=c(11,21,31,41,12,22,32,42), 
       col=cols, lty=1:2, cex=0.8, text.font=4, box.lty=0,
       inset=c(-0.3, 0), xpd=TRUE)
  • xpd=TRUE:允许图例绘制到默认的绘图区域之外
  • inset=c(-0.3, 0):调整图例的偏移量,负数x值表示向右侧移出图框,你可以根据自己的图的大小微调这个数值(比如改成-0.2或-0.4)

方法二:使用在坐标轴范围内的数值坐标

如果你偏好直接指定坐标,要确保坐标落在你设置的xlim和ylim范围内,比如:

legend(10.2, 0.6, legend=c(11,21,31,41,12,22,32,42), 
       col=cols, lty=1:2, cex=0.8, text.font=4, box.lty=0,
       xpd=TRUE)

这里x=10.2略大于xlim的上限10,y=0.6是ylim的上限,配合xpd=TRUE就能把图例放在右上角的图外区域。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:12:46