【手把手陪你学R】用fmsb包画雷达图

  • Post author:
  • Post category:其他




雷达图是什么?


雷达图

(Radar Chart),又可称为戴布拉图、蜘蛛网图,每个数据系列均拥有各自的坐标轴,这些坐标轴由中心向外辐射, 并用折线将同一系列的数值进行连接,用以展示各数据系列之间,以及某个特定的数据系列与其他数据系列的整体关系


适用场景

:展现并对比某个数据系列的不同关键特征,以及各个数据系列在不同维度上的取值大小


不适用场景

:类别和特征过多的数据集



第一步 安装并载入fmsb包

install.packages("fmsb")   #安装fmsb包
library(fmsb)   #载入fmsb包



第二步 读取CSV文件

本篇使用的数据集是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)



★微信搜一搜“TriHub数据社”,欢迎关注获得入社福利



版权声明:本文为Yif18原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。