You need to enable JavaScript to run this app. ggplot2中如何将轴旁geom_tile色条移至绘图区域外?
优惠活动
大模型
产品
解决方案
定价
更多

ggplot2中如何将轴旁geom_tile色条移至绘图区域外?

提问:将ggplot用geom_tile绘制的轴旁色条移出主绘图区

我此前曾咨询过如何为ggplot添加沿轴排布的自定义色条,本次生成对应图表所用的代码如下:

library(ggnewscale)
library(tidyverse)

df <- data.frame(
  a = paste0("a", c(1,1,1,2,2,2,3,3,3)),
  b = paste0("b", c(1,2,3,1,2,3,1,2,3)),
  c = c(-10, 3, 5, -2, 9, 1, -5, -2, 0)
)

z <- c(2, 4, 1, 7, 9, 3)

# 设置配色方案
library(colorspace)
pal <- rev(diverging_hcl(palette = "Blue-Red", n = 11))
palEdge <- rev(sequential_hcl(palette = "Plasma", n = 11))

# 绘图
library(ggplot2)

ggplot(df, aes(a, b)) +
  geom_tile(aes(fill = c)) +
  scale_fill_gradientn(
    colors = pal,
    guide = guide_colorbar(
      frame.colour = "black",
      ticks.colour = "black"
    ),
    name = "c"
  ) +
  theme_classic() +
  labs(x = "A", y = "B") +
  new_scale_fill() +
  geom_tile(
    data = tibble(a = paste0("a", 1:3), z = z[1:3]),
    aes(x = a, y = 0.5, fill = z, height = 0.1)
  ) +
  geom_tile(
    data = tibble(b = paste0("b", 1:3), z = z[4:6]),
    aes(x = 0.45, y = b, fill = z, width = 0.1)
  ) +
  scale_fill_gradientn(
    colors = palEdge,
    guide = guide_colorbar(
      frame.colour = "black",
      ticks.colour = "black"
    ),
    name = "Main\neffects" # 此处原本想添加βhat符号
  )

这段代码生成的效果为:主图是变量c对应的热图,x轴、y轴的内侧各嵌入了一条对应数值的自定义色条,占用了部分主绘图区空间。
我希望实现的效果是将这些彩色色条移动到绘图区域外部,参考我用Photoshop制作的效果原型:色条分别放置在主图下方外侧、左侧外侧,完全不占用主绘图区的空间。

[补充说明] 下方@teunbrand给出的解答思路很好,但我修改了问题描述以更精准匹配实际遇到的问题,因此目前无法直接套用@teunbrand的方案,核心需求为实现将轴旁使用geom_tile绘制的色条移出ggplot主绘图区。
内容的提问来源于stack exchange,提问作者Electrino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 04:36:07