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

ggRadar绘图显示值与数据框不符问题求助

问题解决思路与修正方案

核心问题分析

你遇到的数值显示异常,主要由两个原因导致:

  1. ylim参数设置错误:代码里ylim = c(1,1)会强制雷达图的y轴范围固定为1,所有数据点都会被压缩到同一位置,直接导致数值显示完全失真。
  2. 过滤数据时丢失了雷达图必需的极值行:ggRadar(来自fmsb包)要求数据框的前两行必须是各指标的最大值和最小值,用来定义雷达图的轴刻度范围。如果过滤操作删掉了这两行,函数会自动用当前过滤后数据的列极值重新计算轴,导致刻度和原图表不一致,看起来数值异常。

修正步骤与代码

1. 修正数据过滤逻辑,保留极值行

过滤时要保留原数据的前两行极值,再合并目标分组数据:

library(dplyr)
library(stringr)

# 提取前两行的极值行 + 过滤出PlotNames包含SUB_的行
df.Plot.PI.SUB <- df.Plot.PI.total %>% 
  slice(1:2, which(str_detect(PlotNames, "SUB_")))

2. 修正ylim参数

将ylim改成合理的数值范围(比如你的指标实际最小值和最大值,示例用c(0, 10)),或者直接去掉该参数,让ggRadar自动根据极值行计算刻度:

library(fmsb)

p.sub <- ggRadar(df.Plot.PI.SUB, mapping = aes(colour = scenario, facet = PlotNames),
                 size=3, alpha = 0, ylim = c(0, 10))+ # 替换为你实际的数值范围
  theme_bw()+
  scale_color_manual(name="Scenario", values = cbPalette.PI)+
  scale_fill_manual(values = cbPalette.PI, name="Scenario")+
  labs(title = "Changes in Protection Indexes (SUB Group)")+
  theme(plot.title = element_text(size = 20,face = "bold"),
        strip.text.x = element_text(size = 14),
        legend.title = element_text(face="bold",size = 18), legend.text = element_text(size = 16),
        legend.position = "bottom",
        text = element_text(size=18),
        axis.text = element_text(size=14),axis.title = element_text(size=14))

额外验证

运行完过滤代码后,可以用head(df.Plot.PI.SUB)检查数据框的前两行是否还是原来的极值行,确保结构正确;同时检查各指标列的数值范围,确认ylim的设置和实际数据匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:55:32