R语言画肿瘤领域的瀑布图

2022-11-15 12:53:30 浏览数 (2)

今天要说的是肿瘤治疗领域常用的瀑布图,不是生物信息学领域的瀑布图。

瀑布图和泳道图经常一起出现,泳道图的绘制请看历史推文:

用ggplot2画肿瘤领域常见的泳道图 ggplot2画泳道图箭头如何显示

瀑布图可以展示同一个药物治疗不同组别患者之间的治疗效果。

肿瘤领域的瀑布图

其实就是普通的条形图。

首先我们虚构一个数据:

代码语言:javascript复制
suppressMessages(library(tidyverse))

set.seed(1111)
df <- data.frame(id = 1:60,
                 group = sample(c("group1","group2","group3","group4"),60,replace = T),
                 size = sample(c(-10:-1,1:10),60,replace = T)
                 )
df$id <- factor(df$id)

str(df)
## 'data.frame': 60 obs. of  3 variables:
##  $ id   : Factor w/ 60 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ group: chr  "group4" "group2" "group2" "group2" ...
##  $ size : int  7 5 -3 -7 -2 2 10 3 -9 2 ...
head(df)
##   id  group size
## 1  1 group4    7
## 2  2 group2    5
## 3  3 group2   -3
## 4  4 group2   -7
## 5  5 group4   -2
## 6  6 group1    2

一共3列,第一列是病人编号,第二列是所属组别,比如常见的突变组/未突变组,CP/PR/PD/SD组等等,还有一列是肿瘤变化大小。

如果你需要展示更多的信息,只要再增加列即可。

直接用ggplot2画图即可:

代码语言:javascript复制
ggplot(df, aes(fct_reorder(id, size), size)) 
  geom_bar(stat = "identity", aes(fill=group)) 
  scale_x_discrete(name=NULL,labels=NULL) 
  labs(y="Change from baseling (cm)") 
  geom_hline(yintercept = 3,linetype=2,color="red") 
  theme_classic() 
  theme(axis.line.x = element_blank(),
        axis.title.y = element_text(size = 18,color="black"),
        axis.ticks.x = element_blank(),
        axis.text.y = element_text(size = 14,color = "black"),
        legend.direction = "horizontal",
        legend.position = c(0.7,0.1)
        )

plot of chunk unnamed-chunk-2

这个图由于数据问题,并不能看出什么效果,不过画一个瀑布图就是这么简单!

0 人点赞