雷达图

作者

雷达图(Radar Chart)或蜘蛛图(Spider Chart)或网络图(Web Chart)是一种二维图表类型,用于在一个或多个定量变量上绘制一系列值。在R语言中,fmsb库是构建这种图表的最佳工具。

示例

Radar Plot DEMO

环境配置

  • 系统要求: 跨平台(Linux/MacOS/Windows)

  • 编程语言:R

  • 依赖包:fmsb

# 安装包
if (!requireNamespace("fmsb", quietly = TRUE)) {
  install.packages("fmsb")
}

# 加载包
library(fmsb)

数据准备

主要运用 R 内置的 iris 数据集,自建数据集和 TCGA 数据库。

输入数据格式需要非常具体。每一行必须是一个实体。每一列都是一个定量变量。前两行提供了每个变量将使用的最小值和最大值。

# 1.R内置的data——iris
head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
# 2.自建数据集
## 这里创建了一个关于三位学生不同学科成绩情况的数据集
set.seed(99)                  
data <- as.data.frame(matrix( sample( 0:20 , 15 , replace=F) , ncol=5))
colnames(data) <- c("math" , "english" , "biology" , "music" , "R-coding" )
rownames(data) <- paste("mister" , letters[1:3] , sep="-")
data <- rbind(rep(20,5) , rep(0,5) , data) 

# 3.TCGA数据库(肝癌的基因表达数据)
tcga_group_radar <- readr::read_csv(
"https://bizard-1301043367.cos.ap-guangzhou.myqcloud.com/tcga_group_radar.csv")
tcga_simple_bar <- data.frame(tcga_group_radar[3,])

可视化

1. 基本绘图

以iris数据为例

#数据整理
iris_setosa <- iris[c(1:50),]
iris_setosa <- iris_setosa[,-5]
iris_setosa_radar <- rbind(rep(6,4),rep(0,4),iris_setosa)
#画图
par(mar = c(1, 1, 1, 1))
radarchart(iris_setosa_radar)
图 1: 基本绘图

这个雷达图描述了setosa这个种类中某一样本的四种基本属性的分布情况。

以TCGA数据库为例

par(mar = c(1, 1, 1, 1))
tcga_simple_bar <- rbind(rep(2.5,3),rep(0,3),tcga_simple_bar)
radarchart(tcga_simple_bar)
图 2: 基本绘图

这个雷达图描述了某样本中TIGAR、RNF44、RAB4B基因的表达量。

提示

关键参数:

多边形特征: - pcol:线条颜色 - pfcol:填充颜色 - plwd:线条宽度

网格特征: - cglcol:网格颜色 - cglty:网格线类型 - axislabcol:坐标轴线条颜色 - caxislabels:要显示的坐标轴标签向量 - cglwd:网格宽度

组标签: - vlcex:组标签大小

radarchart(iris_setosa_radar,
           axistype=1 ,  
           pcol=rgb(0.2,0.5,0.5,0.9),
           pfcol=rgb(0.2,0.5,0.5,0.1),
           plwd=4,  
           cglcol="grey",cglty=1,axislabcol="grey",
           caxislabels=seq(0,20,5), cglwd=0.8, vlcex=0.8)
图 3: 参数调整

这个雷达图描述了setosa这个种类中某一样本的四种基本属性的分布情况。

2. 多组群雷达图

以自建数据集为例

radarchart(data)
图 4: 多组群雷达图

这个雷达图描述了3个学生各科成绩的分布情况。

调整参数

# 设置颜色参数
colors_border=c(rgb(0.2,0.5,0.5,0.9),rgb(0.8,0.2,0.5,0.9),rgb(0.7,0.5,0.1,0.9) )
colors_in=c(rgb(0.2,0.5,0.5,0.4),rgb(0.8,0.2,0.5,0.4) ,rgb(0.7,0.5,0.1,0.4) )

# 画图
radarchart(data,
           axistype=1 , 
           pcol=colors_border , pfcol=colors_in , plwd=4 , plty=1,
           cglcol="grey", cglty=1, 
           axislabcol="grey", caxislabels=seq(0,20,5), 
           cglwd=0.8,
           vlcex=0.8
)

# 添加图例
legend(x=0.7, y=1, 
       legend = rownames(data[-c(1,2),]), bty = "n",
       pch=20,col=colors_in , text.col = "grey", 
       cex=1.2, pt.cex=3)
图 5: 调整参数

这个雷达图描述了3个学生各科成绩的分布情况。

以TCGA数据库为例

par(mar = c(1, 1, 1, 1))
tcga_group_radar <- rbind(rep(3,3),rep(0,3),tcga_group_radar)
tcga_group_radar <- as.data.frame(tcga_group_radar)#必须要转化为数据框的形式才可以画图
radarchart(tcga_group_radar)
图 6: TCGA

这个雷达图描述了某样本中TIGAR、RNF44、RAB4B基因的表达量。

应用场景

1. 多变量数据的综合比较

RadarApp1
图 7: 多变量数据的综合比较

该研究利用雷达图来分析YIF1B基因在泛癌中的作用和预后价值。 [1]

2. 适用综合评价多个指标

RadarApp2
图 8: 适用综合评价多个指标

该研究使用雷达图来展示老年人脆弱性评估的各个领域。 [2]

参考文献

[1] Liu J, Chen Z, Zhao P, Li W. Prognostic and immune regulating roles of YIF1B in Pan-Cancer: a potential target for both survival and therapy response evaluation. Biosci Rep. 2020 Jul 31;40(7):BSR20201384. doi: 10.1042/BSR20201384. PMID: 32648580; PMCID: PMC7378310.

[2] Jung HW. Visualizing Domains of Comprehensive Geriatric Assessments to Grasp Frailty Spectrum in Older Adults with a Radar Chart. Ann Geriatr Med Res. 2020 Mar;24(1):55-56. doi: 10.4235/agmr.20.0013. Epub 2020 Mar 27. PMID: 32743323; PMCID: PMC7370779.

[3] Nakazawa M (2024). fmsb: Functions for Medical Statistics Book with some Demographic Data. R package version 0.7.6, https://CRAN.R-project.org/package=fmsb.