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

humapr包人体热图问题:添加热图及side参数异常求助

humapr包常见问题解答

1. 基于统计数据为人体图添加热图

完全可以通过映射统计变量实现热图效果,核心是将统计数据(如计数、均值)绑定到geom_body的颜色/填充美学上,配合颜色比例尺定义热图范围。

实现步骤与示例代码

library(tidyverse)
library(humapr)

# 构造包含部位统计数据的数据集(以计数为例)
body_stats <- tibble(
  loc = c("head", "neck", "chest", "abdomen", "arm", "forearm", "hand", "thigh", "leg", "foot"),
  count = c(12, 8, 25, 18, 30, 22, 15, 28, 20, 10) # 模拟统计值
)

# 绘制带热图的人体图
body_stats |> 
  humap() +
  geom_body(aes(loc = loc, fill = count), annotate = NA) +
  scale_fill_gradient(low = "#f7fbff", high = "#08306b") + # 自定义热图渐变色
  labs(fill = "部位出现次数")

2. 合并部位时side参数报错的解决方法

报错原因

head、neck、chest、abdomen这类部位属于无双侧区分的人体结构,humapr没有为它们提供左右双侧的图形元素。当给这些部位分配left/right的side值时,无法匹配对应图形,导致数据缺失,进而触发min/max计算的警告。

修正方案

预处理数据,给无双侧的部位统一设置side = "mid",双侧部位保留left/right值,确保数据与图形元素匹配:

library(tidyverse)
library(humapr)

# 构造并预处理数据:区分单侧/双侧部位的side值
body_data <- data.frame(
  loc = sampler(c("head", "neck", "chest", "abdomen", "arm", "forearm", "hand", "thigh", "leg", "foot"), 200),
  gender = sample(c("male", "female"), 200, TRUE),
  year = 1
) |> 
  mutate(
    side = case_when(
      # 双侧部位分配left/right
      loc %in% c("arm", "forearm", "hand", "thigh", "leg", "foot") ~ sampler(c("left", "right"), n()),
      # 单侧部位统一设为mid
      TRUE ~ "mid"
    )
  )

# 绘制合并部位的双侧人体图
humap() + 
  geom_body(
    aes(loc = loc, side = side), 
    data = body_data, 
    combine = list(
      `Upper extremities` = c("arm", "forearm","hand"),
      `Lower extremities` = c("thigh","leg","foot"),
      `Trunk` = c("abdomen","chest"),
      `Head & neck` = c("head","neck")
    )
  )

这样处理后,既能保留双侧部位的左右展示,又能避免单侧部位的匹配错误,消除警告和缺失值问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 18:43:22