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

R语言ggplot中geom_polygon仅蓝色多边形显示,其余不显示问题排查

问题原因与解决方案

核心问题分析

你的代码存在三个关键问题,导致除蓝色多边形外其余均无法显示:

  1. 数据重复错误:normalgewicht和uebergewicht的顶点数据完全一致,后者会被前者覆盖,且数据本身不符合超重BMI区间的逻辑。
  2. 坐标轴截断:你设置了ylim(40, 110),但adipositas_I及后续类别的多边形顶点y值(如128.3、146.6)超出该范围,导致这些多边形被完全裁剪。
  3. 顶点逻辑偏差:手动定义的顶点未遵循BMI公式的曲线规律,部分顶点顺序可能导致绘制的区域异常。

修正步骤与代码

1. 基于BMI公式生成正确的区域数据

BMI计算公式为:BMI = 体重(kg) / (身高(m))²,通过身高序列生成对应BMI区间的体重曲线,替代手动固定顶点:

# 生成连续的身高序列
height_seq <- seq(150, 210, by = 1)

# 定义BMI区间、范围和对应颜色
bmi_config <- tibble(
  category = c("Untergewicht", "Normalgewicht", "Übergewicht", "Adipositas I", "Adipositas II", "Adipositas III"),
  bmi_min = c(0, 18.5, 25, 30, 35, 40),
  bmi_max = c(18.5, 25, 30, 35, 40, Inf),
  fill_color = c("blue", "green", "yellow", "orange", "red", "darkred")
)

# 构造所有BMI类别的闭合多边形数据
bmi_polygons <- map_dfr(seq_len(nrow(bmi_config)), function(i) {
  current <- bmi_config[i,]
  # 计算当前BMI区间的上下体重边界
  weight_low <- current$bmi_min * (height_seq/100)^2
  weight_high <- current$bmi_max * (height_seq/100)^2
  # 生成闭合多边形顶点:左到右的上边界 + 右到左的下边界
  tibble(
    height = c(height_seq, rev(height_seq)),
    weight = c(weight_high, rev(weight_low)),
    category = current$category,
    fill_color = current$fill_color
  )
})

2. 绘制修正后的图表

grafik <- male_players_gefiltert %>%
  ggplot(aes(x = height_cm, y = weight_kg)) +
  # 一次性绘制所有BMI背景色块,按类别分组
  geom_polygon(data = bmi_polygons, aes(x = height, y = weight, group = category, fill = fill_color), alpha = 0.3) +
  # 直接使用定义的颜色,不生成默认图例
  scale_fill_identity() +
  geom_point(alpha = 0.1, shape = 15) +
  xlim(150, 210) +
  # 调整y轴范围以容纳完整的BMI区域,或根据需求修改
  ylim(40, 140) +
  geom_vline(xintercept = my_height, linetype = "dashed") +
  geom_hline(yintercept = my_weight, linetype = "dashed") +
  labs(x = "身高(cm)", y = "体重(kg)", title = "BMI类别分布")

额外说明

  • 合并所有BMI区域数据,避免重复调用geom_polygon,代码更简洁易维护。
  • 设置alpha = 0.3可防止背景色块遮挡前景散点。
  • 若必须保留ylim(40,110),需手动截断Adipositas类别的顶点y值,但会丢失部分BMI区域的完整性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 09:10:58