You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R绘制多轴不同刻度的雷达图(蜘蛛图)以展示足球运动员统计数据

实现方案

你使用的fmsb包radarchart函数本身原生支持各轴独立设置限值,只需保证输入数据框的结构符合要求,再调整刻度显示参数即可:

  1. 数据框前两行必须分别为各列(对应雷达图各轴)的最大值、最小值,第三行及之后为待展示的球员数据,函数会自动为每一列单独做[min, max]区间的线性映射,无需全局重缩放,完全满足你不同量纲指标的展示需求。
  2. 调整绘图参数显示全轴刻度,也可自定义标注球员数值。

完整可运行代码

# 加载依赖包
library(fmsb)

# 示例数据
colnames <- c("accuratePass","bigChanceCreated","duelWon","goalAssist","goals")
max_val <- c(78.3, 0.741, 9.61, 0.429, 0.871)
min_val <- c(3.3, 0.000, 0.11, 0.000, 0.000)
example <- c(15.4, 0.353, 3.41, 0.147, 0.059)
df <- as.data.frame(rbind(max_val, min_val, example))
colnames(df) <- colnames

# 绘制雷达图
radarchart(df,
           seg = 5, # 轴分段数可按需调整
           axistype = 4, # 显示所有分段的刻度标签
           cglcol = "grey", cglty = 1, # 网格线样式
           axislabcol = "blue", # 轴标签颜色
           plwd = 2, # 球员数据线条宽度
           pcol = "red", # 球员数据线条颜色
           pfcol = rgb(1,0,0,0.2) # 球员数据填充色(半透明)
)

# 可选:在对应位置标注球员的具体数值
text_locs <- data.frame(
  angle = seq(90, 90 - 360/ncol(df), length.out = ncol(df)) * pi/180,
  # 计算每个指标数值映射到雷达图上的半径比例
  r = (unlist(df[3,]) - unlist(df[2,])) / (unlist(df[1,]) - unlist(df[2,]))
)
text(x = text_locs$r * cos(text_locs$angle), 
     y = text_locs$r * sin(text_locs$angle),
     labels = round(unlist(df[3,]), 2),
     pos = 3, col = "red", cex = 0.9)

参数说明

  • 如果需要自定义各轴的刻度标签,可新增caxislabels参数,传入和seg参数长度匹配的标签向量即可
  • 如果要同时展示多名球员数据,只需在数据框的第三行之后追加对应球员的指标行即可,新增plty、pcol参数可区分不同球员的线条样式

内容的提问来源于stack exchange,提问作者hexolitemax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:06:05