瀑布圖展示的形式有好幾種丸氛,但本質(zhì)都是不變的漱挚,只不過是說柱子展示的劑量組還是BOR霹粥,或者柱子頂部展示BOR或者疾病類型等等坊饶。
今天來講講如何在瀑布圖上添加BOR,就像下面這張圖一樣
一:SGPLOT的用法
我畫圖很少用SGPLOT挫望,SGPLOT畫瀑布圖使用vbarparm(應(yīng)該也有其他的選項)立润,然后vbarparm有一個選項是datalabel,作用就是在每個數(shù)據(jù)點展示標(biāo)簽。這個數(shù)據(jù)點在瀑布圖中應(yīng)該就是每個受試者媳板。
如果你用datalabel=一個變量的名字桑腮,那么柱狀圖展示的就是這個變量的值。
之后我們改一下inset的內(nèi)容就可以了蛉幸,這里就不展示了破讨。
二:GTL的畫法
GTL畫瀑布圖,可以用barchart巨缘,但是展示BOR的時候很麻煩添忘;所以可以用barchartparm采呐,這個有跟sgplot里datalabel一樣的選項
三:R語言畫瀑布圖
R畫圖最出名的應(yīng)該就是ggplot若锁,這個我還沒有研究過,只是粗略地畫了一下斧吐,然后圖片跟程序不是對應(yīng)的又固。
############################################ waterfall plot###########################################ggplot2需要R的版本在4.3.3# install.packages("ggplot2")library(ggplot2)#檢查是否安裝了這個包library(haven)#讀取SAS數(shù)據(jù)集的包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 函數(shù)用于對數(shù)據(jù)框 df 的每一行(1 表示行)應(yīng)用一個自定義函數(shù)煤率,該函數(shù)使用 max(x, na.rm = TRUE) 來計算每行的最大值仰冠,并忽略缺失值。#method 2 使用pamx函數(shù)adborpc2$aval<-pmax(adborpc2$SD,adborpc2$CR,adborpc2$PR,adborpc2$PD,adborpc2$NE,na.rm = TRUE)# 排序數(shù)據(jù)框以便繪制瀑布圖adborpc2 <- adborpc2[order(adborpc2$aval), ]#df$Subject <- factor(df$Subject, levels = df$Subject)# 創(chuàng)建瀑布圖p <- ggplot(adborpc2, aes(x = USUBJID, y = aval, fill = BOR)) +geom_bar(stat="identity", width = 0.5, position = position_dodge(width = 0.7)) +# 調(diào)整柱子寬度和間距geom_text(aes(label = BOR), vjust = ifelse(adborpc2$aval< 0, 1.5, -0.5), color ="black") +# 根據(jù)正負(fù)值調(diào)整標(biāo)簽位置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)