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

Rmarkdown生成HTML文档时并排展示图片如何保持宽高一致

解决方案

  • 方案1:强制统一tmap布局参数与导出设置
    所有地图生成时固定布局、边距、宽高比,导出时固定dpi:
# 每张地图生成时统一添加如下布局参数,强制锁死宽高比与边距
X1.map <- X1.map + 
  tm_layout(
    asp = 0.375, # 对应你设置的width/height=1.5/4,固定宽高比
    inner.margins = c(0.02, 0.02, 0.02, 0.02), # 统一内边距,避免不同内容自动调整
    outer.margins = 0, # 统一外边距
    legend.position = c("right", "bottom"), # 统一图例位置,可根据需求调整
    legend.text.size = 0.8, legend.title.size = 1 # 统一图例文字大小
  )
# 导出时统一添加dpi参数,固定像素尺寸
tmap_save(X1.map, "plots/X1.map.png", height = 4, width = 1.5, dpi = 300)

所有地图都按照上述规则生成、导出后再导入R Markdown即可。

  • 方案2:通过HTML CSS强制统一图片显示尺寸
    直接在R Markdown的图片引入chunk中添加CSS规则,强制所有图片高度一致且不变形:
{r maps, fig.cap = "Fig. Z - Maps", fig.show="hold", out.width="25%", fig.align = "center", echo = FALSE, out.extra='style="height: 400px; object-fit: contain; margin: 0 5px;"'}
knitr::include_graphics("plots/X1.map.png")
knitr::include_graphics("plots/X2.map.png")
knitr::include_graphics("plots/X3.map.png")
knitr::include_graphics("plots/X4.map.png")

其中height:400px可根据你的展示需求调整数值,object-fit: contain会保证图片按原始比例缩放,不会出现拉伸变形。

  • 方案3:直接在R Markdown中渲染tmap对象(优先推荐)
    省去先导出本地png再导入的步骤,直接在chunk内绘制tmap对象,由knitr统一控制输出尺寸,完全避免导出环节的尺寸差异:
{r maps, fig.cap = "Fig. Z - Maps", fig.show="hold", fig.width=1.5, fig.height=4, out.width="25%", fig.align = "center", echo = FALSE}
# 直接写四个tmap对象即可,不需要用include_graphics导入
X1.map
X2.map
X3.map
X4.map

该方案不需要预先导出图片,所有输出参数统一由knitr控制,一致性最高。

内容的提问来源于stack exchange,提问作者Drew

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:24:00