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

如何用knitr kable将gt_tbl表格并排显示?

解决gt表格在bookdown/HTML中并排显示的问题

方案1:用HTML Flexbox原生布局(推荐,适配HTML输出)

既然输出是HTML,直接利用HTML的Flexbox布局嵌入gt生成的HTML表格,无需转成图片,从根源避免对齐问题,同时保留gt表格的交互性和美观度。

代码示例:

library(gt)
library(htmltools)

# 生成3个示例gt表格
tbl1 <- mtcars[1:3, 1:4] |> 
  gt() |> 
  tab_header(title = "车辆数据") |> 
  tab_options(table.width = px(350))  # 统一表格宽度

tbl2 <- iris[1:3, 1:4] |> 
  gt() |> 
  tab_header(title = "鸢尾花数据") |> 
  tab_options(table.width = px(350))

tbl3 <- ToothGrowth[1:3, ] |> 
  gt() |> 
  tab_header(title = "牙齿生长数据") |> 
  tab_options(table.width = px(350))

# 用Flexbox布局实现并排
tagList(
  div(
    style = "display: flex; gap: 25px; align-items: flex-start; flex-wrap: wrap;",
    tbl1, tbl2, tbl3
  )
)

关键设置说明:

  • display: flex: 开启弹性布局,让子元素(表格)横向排列
  • gap: 25px: 控制表格间的间距
  • align-items: flex-start: 让表格顶部对齐,避免因内容高度不同导致的错位
  • flex-wrap: wrap: 适配小屏幕,空间不足时自动换行
  • tab_options(table.width = px(350)): 统一所有表格的宽度,保证布局整齐

方案2:修复图片转存后的对齐问题(适合需兼容非HTML场景)

如果必须将gt表格转为图片,解决cowplot对齐问题的核心是统一所有表格的尺寸,具体步骤:

library(gt)
library(cowplot)

# 生成表格并统一尺寸设置
tbl1 <- mtcars[1:3, 1:4] |> 
  gt() |> 
  tab_header(title = "车辆数据") |> 
  tab_options(
    table.width = px(400),
    table.height = px(220)  # 强制表格高度一致
  )

# 保存为图片时使用统一的宽高
gtsave(tbl1, "tbl1.png", width = 4, height = 2.2, dpi = 150)

# 重复上述步骤生成tbl2、tbl3并保存为图片
tbl2 <- iris[1:3, 1:4] |> 
  gt() |> 
  tab_header(title = "鸢尾花数据") |> 
  tab_options(table.width = px(400), table.height = px(220))
gtsave(tbl2, "tbl2.png", width = 4, height = 2.2, dpi = 150)

tbl3 <- ToothGrowth[1:3, ] |> 
  gt() |> 
  tab_header(title = "牙齿生长数据") |> 
  tab_options(table.width = px(400), table.height = px(220))
gtsave(tbl3, "tbl3.png", width = 4, height = 2.2, dpi = 150)

# 读取图片并强制水平对齐
p1 <- ggdraw() + draw_image("tbl1.png")
p2 <- ggdraw() + draw_image("tbl2.png")
p3 <- ggdraw() + draw_image("tbl3.png")

plot_grid(
  p1, p2, p3,
  nrow = 1,
  align = "h",  # 水平对齐
  axis = "tb",  # 以顶部和底部为基准对齐
  rel_widths = c(1,1,1)  # 保证三个图片宽度占比一致
)

关键修复点:

  • 用tab_options强制表格的宽高一致,避免生成的图片尺寸差异
  • 保存图片时使用相同的width、height参数
  • plot_grid中设置align = "h"和rel_widths = c(1,1,1),确保横向对齐均匀

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:40:30