雷达图(Radar Chart),又可称为戴布拉图、蜘蛛网图,每个数据系列均拥有各自的坐标轴,这些坐标轴由中心向外辐射, 并用折线将同一系列的数值进行连接,用以展示各数据系列之间,以及某个特定的数据系列与其他数据系列的整体关系
适用场景:展现并对比某个数据系列的不同关键特征,以及各个数据系列在不同维度上的取值大小
不适用场景:类别和特征过多的数据集
install.packages("fmsb") #安装fmsb包
library(fmsb) #载入fmsb包
本篇使用的数据集是TriHub部分主要成员使用各种数据分析软件的频繁度评分,取值范围为(0,1),取值越高表示该成员越频繁使用该种软件
data <- read.csv("C:/Users/dell-pc/Desktop/data.csv", header = T, row.names = 1) #读取CSV文件,指定首行为列名,首列为行名
data #输出数据集
colnames(data) #输出列名
rownames(data) #输出行名
data_rd <- rbind(rep(1,5), rep(0,5), data) #在原数据集里添加两行数据,第一行为最大值1,第二行为最小值0
data_rd #输出绘图数据集
radarchart(data_rd) #绘制雷达图
library(RColorBrewer) #载入RColorBrewer包,首次使用需先安装
colors <- brewer.pal(5, "Pastel1") #设置配色方案
radarchart(data_rd, axistype = 1, axislabcol = "grey",
pcol = colors, plwd = 3, plty = 1,
cglcol = "grey", cglwd = 1, cglty = 5, vlcex = 1)
axistype:指定坐标轴的样式,可以是0-5
axislabcol:指定坐标轴的颜色
pcol:指定数据系列线的颜色,可以是1-8,也可以自选配色
plwd:指定数据系列线的宽度
plty:指定数据系列线的样式,可以是1-6
cglcol:指定网格线的颜色
cglwd:指定网格线的宽度
cglty:指定网格线的样式,可以是1-6
vlcex:指定组标签字体的大小
配色方案参考网站
legend(x = "bottom", legend = rownames(data), horiz = T,
bty = "n", pch = 16, col = colors, text.col = "black",
cex = 1, pt.cex = 2)
x:指定图例的位置
legend:指定图例的名称
horiz:指定图例的排布,可以是"T"或"F","T"表示水平,"F"表示垂直
bty:指定图例的边框,可以是"o"或"n","o"表示有边框,"n"表示无边框
pch:指定图例标签的样式,可以是1-25
col:指定图例标签的颜色
text.col:指定图例字体的颜色
cex:指定图例字体的大小
pt.cex:指定图例标签的大小
图例标签的样式编码:
library(scales) #载入scales包,首次使用需先安装
colors_in <- alpha(colors, 0.6) #设置填充颜色,及深浅
radarchart(data_rd, axistype = 0, axislabcol = "grey",
pcol = colors, pfcol = colors_in, plwd = 2, plty = 1,
cglcol = "grey", cglwd = 1, cglty = 1, vlcex = 1) #pfcol:指定指定数据系列多边形的填充色
legend(x = "bottom", legend = rownames(data), horiz = T,
bty = "n", pch = 16, col = colors, text.col = "black",
cex = 1, pt.cex = 2)
colors <- c("#fbb4ae", "#b3cde3", "#ccebc5", "#decbe4", "#fed9a6") #设置配色方案
titles <- rownames(data) #设置图形的标题
titles #输出图形的标题
op <- par(mar = c(1, 1, 2, 1), bg = "#f5f5f5") #设置画布的边界和背景色参数
par(mfrow = c(3,2)) #设置图形的排列方式,例如3行2列
for(i in 1:5){
radarchart(data_rd[c(1,2,i+2),], axistype = 0, axislabcol = "grey", title = titles[i],
pcol = colors[i], pfcol = scales::alpha(colors[i], 0.8), plwd = 2, plty = 1,
cglcol = "grey", cglty = 1, cglwd = 1, vlcex = 1)
}
par(op)