瀑布图展示的形式有好几种,但本质都是不变的,只不过是说柱子展示的剂量组还是BOR,或者柱子顶部展示BOR或者疾病类型等等。
今天来讲讲如何在瀑布图上添加BOR,就像下面这张图一样
一:SGPLOT的用法
我画图很少用SGPLOT,SGPLOT画瀑布图使用vbarparm(应该也有其他的选项),然后vbarparm有一个选项是datalabel,作用就是在每个数据点展示标签。这个数据点在瀑布图中应该就是每个受试者。
如果你用datalabel=一个变量的名字,那么柱状图展示的就是这个变量的值。
之后我们改一下inset的内容就可以了,这里就不展示了。
二:GTL的画法
GTL画瀑布图,可以用barchart,但是展示BOR的时候很麻烦;所以可以用barchartparm,这个有跟sgplot里datalabel一样的选项
三:R语言画瀑布图
R画图最出名的应该就是ggplot,这个我还没有研究过,只是粗略地画了一下,然后图片跟程序不是对应的。
############################################ waterfall plot###########################################ggplot2需要R的版本在4.3.3# install.packages("ggplot2")library(ggplot2)#检查是否安装了这个包library(haven)#读取SAS数据集的包setwd("D:\\R practice\\project")adborpc2<-read_sas('adborpc2.sas7bdat')adborpc2$aval<-apply(adborpc2,1,max)#如果某个变量包含缺失值,新建的变量的值会是NA#method 1adborpc2$aval<-apply(adborpc2[,c("SD","CR","PR","PD","NE")],1,function(x) max(x, na.rm = TRUE))#apply 函数用于对数据框 df 的每一行(1 表示行)应用一个自定义函数,该函数使用 max(x, na.rm = TRUE) 来计算每行的最大值,并忽略缺失值。#method 2 使用pamx函数adborpc2$aval<-pmax(adborpc2$SD,adborpc2$CR,adborpc2$PR,adborpc2$PD,adborpc2$NE,na.rm = TRUE)# 排序数据框以便绘制瀑布图adborpc2 <- adborpc2[order(adborpc2$aval), ]#df$Subject <- factor(df$Subject, levels = df$Subject)# 创建瀑布图p <- ggplot(adborpc2, aes(x = USUBJID, y = aval, fill = BOR)) +geom_bar(stat="identity", width = 0.5, position = position_dodge(width = 0.7)) +# 调整柱子宽度和间距geom_text(aes(label = BOR), vjust = ifelse(adborpc2$aval< 0, 1.5, -0.5), color ="black") +# 根据正负值调整标签位置scale_fill_manual(values = c("CR"="blue","PR"="green","SD"="yellow","PD"="red")) + theme_minimal() + labs(title ="Waterfall Plot of Tumor Burden Change by Group",x ="Subject",y ="Max Change in Tumor Burden (%)",fill ="Best Overall Response" ) + theme(axis.text.x = element_text(angle = 45, hjust = 1))+facet_wrap(~ TRTP, scales ="free_x")# 打印图形print(p)