用ggplot2美化临床决策曲线

本文介绍了如何使用ggplot2库改进临床决策曲线的美观性。通过观察数据,从模型中提取必要的信息,并转换为适合ggplot2的长格式数据。详细步骤包括从模型中提取数据、获取All和None数据,最后使用ggplot2进行绘图,对比原函数绘制的图表,展示了ggplot2版本的改善效果。
摘要由CSDN通过智能技术生成


前言

今天小伙伴要我帮他改一个临床决策曲线图,我一看,这图好像有点不那么好看,画图函数是rmda包的plot_decision_curve(),我一看帮助文档,可以传入plot()函数的参数,但是我对plot函数又不太熟悉,倒腾了半天也没美化好(菜是原罪),本着不懂就放弃的原则,我决定用ggplot2去画。
下图一张数原函数化的,一张是ggplot2画的,仔细看,区别还是有的。
先看一下原函数
plot_decision_curve画的图
再看下ggplot2
ggplot2画图


一、观察数据

本着有坐标就能画图的大胆想法,我决定去看看模型中包含的数据。咦,这thresholds是从0到1的不就是横坐标吗?这NB不就是纵坐标吗?数据都有了说办就办。

二、步骤

1.从模型中提取模型的数据

ggplot2画图需要长数据类型,从一开始就构建好。里面设置的NBL,NBu,CBR没用到。一开始以为有用,害。。。
**提示:**这里面的Nomogram,age,AJCC_8th_edition,SII,CONUT,chemothreapy,是经过decision_curve函数得到的结果。例如:AJCC_8th_edition<- decision_curve(…)。需要生面这部分代码的请使用浏览器。

library(ggplot2)
library(RColorBrewer)
List<-list(Nomogram,age,AJCC_8th_edition,SII,CONUT,chemothreapy)
#为模型命名
names(List) <- c('Nomogram','age','AJCC_8th_edition','SII','CONUT','chemothreapy')
#经观察(踩坑)发现每个模型的303个数据数据分为3部分,只有前1/3是模型本身的,其余分别是All和None。
#因此设置一个长度,别让它读多了
l <- length(List[[1]][["derived.data"]][["NB"]])/3
#设置一个NA数据框用来循环取数据
dc <- data.frame('NBl'=rep(NA,l),
                 'NB'=rep(NA,l),
                 'NBu'=rep(NA,l),
                 'HRT'=rep(NA,l),
                 'CBR'=rep(NA,l),
                 'Model'=rep(NA,l))
#建立空数据框用来合并数据
dat <- data.frame()
for (i in names(List)) {
   
  dc$NBl <- List[[i]][["derived.data"]][["NB_lower"]][1:l]
  dc$NB<- List[[i]][["derived.data"]][["NB"]][1:l]
  dc$NBu <- List[[i]][["derived.data"]][["NB_upper"]][1:l]
  dc$HRT <- List[[i]][["derived.data"]][["thresholds"]][1:l]
  dc$CBR <- List[[i]][["derived.data"]][["cost.benefit.ratio"]][1:l]
  dc$Model <- rep(i,l)
  #按行合并
  dat <- rbind(dat,dc)
}   

2.提取All和None数据

自己的模型数据取完了,但别忘了临床决策曲线中还有All和None两个,对同一数据建的模型All和None是一样的,所以这里就取第一个模型的All和None数据

#正经模型的数据取完了,现在取All和None的
dc$NBl <- List[[1]][["derived.data"]][["NB_lower"]][(2*l+1):(3*l)]
dc$NB<- List[[1]][["derived.data"]][["NB"]][(2*l+1):(3*l)]
dc$NBu <- List[[1]][["derived.data"]][["NB_upper"]][(2*l+1):(3*l)]
dc$HRT <- List[[1]][["derived.data"]][["thresholds"]][(2*l+1):(3*l)]
dc$
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一口吃两口饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值