R语言自定义layout布局下为image图添加color key图例(不使用ggplot)
解决方案
核心问题说明:fields包的image.plot默认会重新定义绘图设备布局,因此直接和layout搭配使用会破坏预先设置的多图排布。无需使用ggplot2,使用基础绘图系统搭配image.plot的专属参数即可实现需求,完整可运行代码如下:
library(fields) # 定义预设布局 layout(matrix(c(1,1,2,3,2,3), 2, 3)) # 测试数据 y <- matrix(1:200, 10, 20) # 统一配置颜色映射规则,避免多图颜色不一致 plot_cols <- hcl.colors(12, "RdYlBu", rev = TRUE) val_range <- range(y) # 绘制第一幅跨列散点图 par(mai = c(0.9, 0.9, 0.1, 0.1)) plot(1, 1) # 绘制第一个热图并添加图例 par(mai = c(0.6, 0.6, 0.1, 0.8)) image(y, col = plot_cols, zlim = val_range) # 仅绘制图例,不重置布局 image.plot(zlim = val_range, col = plot_cols, legend.only = TRUE, smallplot = c(0.86, 0.93, 0.12, 0.88)) # 绘制第二个热图并添加图例 par(mai = c(0.6, 0.6, 0.1, 0.8)) image(y, col = plot_cols, zlim = val_range) image.plot(zlim = val_range, col = plot_cols, legend.only = TRUE, smallplot = c(0.86, 0.93, 0.12, 0.88))
关键配置说明:
legend.only = TRUE:开启image.plot的仅图例模式,该模式下不会生成新的绘图面板,仅在当前激活的绘图区域内添加色键,完全兼容已设置的layout布局smallplot参数:四个取值分别对应图例的左、右、下、上边界的相对位置,取值范围为0到1,可根据实际画布尺寸和边距需求调整数值,适配不同的排版需求- 所有
image函数统一设置col和zlim参数,确保多幅热图的颜色映射规则完全一致
内容的提问来源于stack exchange,提问作者quibble
相关产品推荐
相关产品推荐

