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
相关产品推荐
相关产品推荐

