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

如何在geom_tile绘制的热力图中添加正负数值分隔线

在geom_tile热力图中添加正负值分隔线

核心解决方案:使用geom_contour的breaks参数

你可以直接通过geom_contour的breaks参数指定绘制值为0的等高线,以此区分正负区域,无需设置复杂的条件判断。以下是完整示例:

library(ggplot2)

# 模拟带正负值的网格数据
set.seed(123)
df <- expand.grid(x = 1:10, y = 1:10)
df$fill_value <- rnorm(100, mean = 0, sd = 2)

# 绘制热力图+正负分隔线
ggplot(df, aes(x = x, y = y)) +
  # 原有热力图层
  geom_tile(aes(fill = fill_value)) +
  # 保留颜色渐变(可根据需求调整配色)
  scale_fill_gradient2(
    low = "#2c7bb6", 
    mid = "#ffffff", 
    high = "#d7191c", 
    midpoint = 0,
    name = "Value"
  ) +
  # 添加0值分隔线
  geom_contour(
    aes(z = fill_value), 
    breaks = 0,  # 指定仅绘制值为0的等高线
    color = "black", 
    size = 1.2,
    linetype = "solid"
  )

关键细节说明

  • 确保geom_contour的z参数与geom_tile的fill参数映射同一数值列,这样分隔线才会准确对应正负边界
  • 通过color、size、linetype可以自定义分隔线的样式,让它在渐变背景下更清晰
  • 如果你的数据不是规则网格,geom_contour依然能自动计算0值的边界线,适用性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:17:08