如何将magick导入的图片与pheatmap、ggplot2等R绘制图表组合排布
问题原因
gridExtra::grid.arrange仅支持grob类型的图形对象,你通过magick::image_read读取的本地图片属于magick-image类,不属于兼容的grob类型,因此无法直接放入排布列表触发报错。
解决方法
将magick读取的图片转换为rasterGrob类型后再传入排布列表即可,修正后的完整代码如下:
# 加载所需包 library(magick) library(pheatmap) library(ggplot2) library(dplyr) library(gridExtra) library(grid) # 读取本地图片并转换为grob对象 my_image <- image_read("Capture.PNG") my_image_grob <- rasterGrob(my_image) # 转换为grid可识别的grob对象 # 生成pheatmap热图 test <- matrix(rnorm(200), 20, 10) mfs <- pheatmap(test) # 生成ggplot散点拟合图 plot_LM <- test %>% as.data.frame() %>% ggplot(aes(x=V1, y=V2)) + geom_point(color="blue") + geom_smooth(method=lm, se=FALSE, fullrange=TRUE, linetype="dashed", color="darkred", fill="blue") # 三图排布 grid.arrange(grobs=list(mfs$gtable, plot_LM, my_image_grob ), ncol= 3, labels=LETTERS[1:3])
可选调整
如果需要调整导入图片的缩放、对齐效果,可以在rasterGrob中添加参数控制:
- 调整宽度:
width = unit(0.9, "npc") - 调整高度:
height = unit(0.9, "npc") - 对齐方式:
just = "center"
内容的提问来源于stack exchange,提问作者adR
相关产品推荐
相关产品推荐

