如何在R语言中绘制方形雷达图而非菱形?fmsb库无法旋转图表
用fmsb绘制方形雷达图的解决方案
fmsb包的radarchart()默认生成菱形雷达图,核心原因是变量轴默认沿坐标轴方向(0°、90°等)排布。要生成方形雷达图,只需将变量轴的角度偏移45°,让每个轴指向正方形的四个顶点方向即可。
具体实现代码
# 设置随机种子保证结果可复现 set.seed(123) # 创建数据 data_t <- as.data.frame(matrix(sample(2:20, 4, replace = T), ncol = 4)) colnames(data_t) <- c("math", "english", "biology", "music") # 添加最大值和最小值行(fmsb要求的必填格式) data_t <- rbind(rep(20, 4), rep(0, 4), data_t) # 自定义变量轴角度:偏移π/4(45°),让轴指向正方形四个角 n_vars <- ncol(data_t) custom_angles <- seq(pi/4, 2*pi + pi/4, length.out = n_vars) # 绘制方形雷达图 radarchart(data_t, axistype = 1, # 显示坐标轴刻度 angle = custom_angles, # 使用自定义角度 pcol = "#0066CC", # 数据折线颜色 pfcol = scales::alpha("#0066CC", 0.3), # 数据区域填充色(半透明) plwd = 2, # 折线宽度 cglcol = "grey", # 网格线颜色 cglty = 1, # 网格线类型 axislabcol = "grey", # 刻度标签颜色 caxislabels = seq(0,20,5), # 刻度值区间 cglwd = 0.8) # 网格线宽度
原理说明
默认情况下,radarchart()会将n个变量的轴按seq(0, 2*pi - 2*pi/n, length.out = n)的角度排布,4个变量时正好对应x轴、y轴的正反向,最终形成菱形轮廓。将每个轴的角度偏移45°后,轴的方向变为45°、135°、225°、315°,此时绘制的雷达图网格和数据多边形都会呈现方形形态。
内容的提问来源于stack exchange,提问作者trilisser
相关产品推荐
相关产品推荐

