# 安装包
if (!requireNamespace("fmsb", quietly = TRUE)) {
install.packages("fmsb")
}
# 加载包
library(fmsb)雷达图
雷达图(Radar Chart)或蜘蛛图(Spider Chart)或网络图(Web Chart)是一种二维图表类型,用于在一个或多个定量变量上绘制一系列值。在R语言中,fmsb库是构建这种图表的最佳工具。
示例

环境配置
系统要求: 跨平台(Linux/MacOS/Windows)
编程语言:R
依赖包:
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)
这个雷达图描述了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)
这个雷达图描述了某样本中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)
这个雷达图描述了setosa这个种类中某一样本的四种基本属性的分布情况。
2. 多组群雷达图
以自建数据集为例
radarchart(data)
这个雷达图描述了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)
这个雷达图描述了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)
这个雷达图描述了某样本中TIGAR、RNF44、RAB4B基因的表达量。
应用场景
1. 多变量数据的综合比较
该研究利用雷达图来分析YIF1B基因在泛癌中的作用和预后价值。 [1]
2. 适用综合评价多个指标
该研究使用雷达图来展示老年人脆弱性评估的各个领域。 [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.
