如何解决使用软件包“ cmprsk”在R中自定义竞争风险图
我正在尝试使用R和包cmprsk
为竞争风险定制图表。具体来说,我想覆盖默认值,即比赛项目使用颜色,而不同组使用线型。
这是我的可复制示例:
library(ggplot2)
library(cmprsk)
library(survminer)
# some simulated data to get started
comp.risk.data <- data.frame("tfs.days" = rweibull(n = 100,shape = 1,scale = 1)*100,"status.tfs" = c(sample(c(0,1,2),size=50,replace=T)),"Typing" = sample(c("A","B","C","D"),replace=T))
# fitting a competing risks model
CR <- cuminc(ftime = comp.risk.data$tfs.days,fstatus = comp.risk.data$status.tfs,cencode = 0,group = comp.risk.data$Typing)
# the default plot makes it impossible to identify the groups
ggcompetingrisks(fit = CR,multiple_panels = F,xlab = "Days",ylab = "Cumulative incidence of event",title = "Competing Risks Analysis")+
scale_color_manual(name="",values=c("blue","red"),labels=c("Tumor","Death without tumor"))
使用ggplot_build()
设法更改了有关线型和颜色的默认设置,但是我找不到添加图例的方法。
p2 <- ggcompetingrisks(fit = CR,multiple_panels = FALSE,title = "Death by TCR",ylim = c(0,1)) +
scale_color_manual(name="","Death without tumor"))
q <- ggplot_build(p2)
q$data[[1]]$colour2 <- ifelse(q$data[[1]]$linetype=="solid","blue",ifelse(q$data[[1]]$linetype==22,"red",ifelse(q$data[[1]]$linetype==42,"green",ifelse(q$data[[1]]$linetype==44,"black",NA))))
q$data[[1]]$linetype <- ifelse(q$data[[1]]$colour=="blue","solid",ifelse(q$data[[1]]$colour=="red","dashed",NA))
q$data[[1]]$colour <- q$data[[1]]$colour2
q$plot <- q$plot + ggtitle("Competing Risks Analysis") + guides(col = guide_legend()) + theme(legend.position = "right")
p2 <- ggplot_gtable(q)
plot(p2)
有人知道如何将图例添加到ggplot_build()
操纵的情节中吗?还是以其他方式绘制竞争风险,使颜色表示组和线型表示事件?
解决方法
您无需遵循ggplot_build
路线。函数ggcompetingrisks
返回一个ggplot对象,该对象本身包含美观映射。您可以使用aes
覆盖它们:
p <- ggcompetingrisks(fit = CR,multiple_panels = F,xlab = "Days",ylab = "Cumulative incidence of event",title = "Competing Risks Analysis")
p$mapping <- aes(x = time,y = est,colour = group,linetype = event)
现在我们已经颠倒了线型和颜色美学映射,我们只需要交换图例标签就可以了:
p + labs(linetype = "event",colour = "group")
请注意,您还可以像其他ggplot对象一样将色标,主题,坐标转换添加到p
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。