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

如何在R Markdown中将100张PNG图片排列为10×10网格并设置标题

在R Markdown中实现10×10带独立标题的图片网格并添加总说明

完全可以实现,以下是两种简洁可靠的方案:

方案1:使用ggplot2 + patchwork(推荐,灵活易调整)

这种方法能精准控制每张图的标题和整体布局,还能轻松添加总说明。

步骤:

  • 先获取所有PNG图片的文件路径
  • 用purrr批量生成带独立标题的ggplot对象
  • 用patchwork::wrap_plots拼接成10×10网格
  • 添加总说明文字
library(ggplot2)
library(patchwork)
library(purrr)
library(png)

# 1. 获取100张PNG图片的路径(假设图片存放在当前目录的images文件夹下)
img_paths <- list.files("images", pattern = "\\.png$", full.names = TRUE)[1:100]

# 2. 生成带独立标题的图片对象(标题用文件名或自定义文本)
img_plots <- map(img_paths, function(path) {
  # 提取文件名作为标题(可替换为自定义标题向量,比如paste0("样本",1:100))
  img_title <- tools::file_path_sans_ext(basename(path))
  
  ggplot() +
    annotation_custom(grid::rasterGrob(readPNG(path)), 
                      xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf) +
    ggtitle(img_title) +
    theme_void() +  # 去掉坐标轴等冗余元素
    theme(plot.title = element_text(size = 8, hjust = 0.5, margin = margin(b = 5)))  # 调整标题大小、居中和边距
})

# 3. 拼接成10×10网格并添加总说明
wrap_plots(img_plots, ncol = 10, nrow = 10) +
  plot_annotation(
    caption = "这是整个图片网格的总说明文字,可根据需求修改内容",
    theme = theme(plot.caption = element_text(size = 12, hjust = 0.5, margin = margin(t = 15)))
  )

方案2:使用knitr + kableExtra(适合纯Markdown输出场景)

如果不需要复杂的图形调整,也可以用表格布局实现网格,每张图放在表格单元格中并添加标题:

library(knitr)
library(kableExtra)

# 生成10×10的表格内容
img_table <- matrix(
  mapply(function(path, title) {
    paste0("![", title, "](", path, ")\n*", title, "*")
  }, img_paths, paste0("图", 1:100)),  # 自定义标题为“图1”到“图100”
  ncol = 10, byrow = TRUE
)

# 输出无表头、无行号的表格
kable(img_table, align = "c", col.names = NULL, row.names = NULL) %>%
  kable_styling(full_width = TRUE, font_size = 8, padding = 2)

# 添加总说明文字
cat("\n**总说明**:这是10×10图片网格的统一说明内容,可自由修改。")

注意事项:

  • 若图片尺寸不一致,可在读取时用grid::rescale调整大小
  • 标题和总说明的样式可通过theme(针对PDF/HTML)或自定义CSS(仅HTML)进一步优化
  • PDF输出时需确保图片路径无中文,避免渲染报错

内容的提问来源于stack exchange,提问作者R Greg Stacey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:03:16