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

如何用grid.table设置表格首列加粗及指定值(7、8、9、10)深色底纹?

实现表格首列加粗+指定值深色底纹的解决方案

需求:

  • 为表格中值为7、8、9、10的单元格添加深色底纹
  • 将表格首列(行名列)设置为加粗

初始尝试

最初尝试通过自定义ttheme_default主题配置样式,代码如下:

myt <- ttheme_default(
        colhead = list(fg_params=list(col="black"),
                     bg_params=list(fill="grey")),
         rowhead = list(fg_params=list(col="black", fontface="bold",hjust=0.5, x=0.5),
                       bg_params=list(fill="grey")))

grid.table(cbind("X\\Y"=rownames(public)[1:4], public[1:4,1:4]),rows=NULL)

grid::grid.newpage()
grid.table(public[1:4,1:4], theme=myt)

问题:自定义主题中rowhead的加粗设置未生效,首列未呈现加粗效果。

首列加粗尝试

尝试拆分表格,单独生成行名列的tableGrob再与表格主体合并,但仅设置了背景样式,未添加加粗属性:

myt <- ttheme_default(
            colhead = list(fg_params=list(col="black"),
                         bg_params=list(fill="grey")),
             rowhead = list(fg_params=list(col="black", fontface="bold",hjust=0.5, x=0.5),
                           bg_params=list(fill="grey")))

grid::grid.newpage()
grid.table(public[1:4,1:4], theme=myt)

rs = tableGrob(cbind("X\\Y"=rownames(public)[1:4]), rows=NULL, theme=ttheme_default(core=list(bg_params=list(fill="grey"))))

grid::grid.draw(gtable_combine(rs, tableGrob(public[1:4, 1:4], rows=NULL)))

问题:行名列仍未加粗,因为未在fg_params中指定fontface="bold"。

最终可行方案

通过在单独生成的行名列tableGrob的core参数中同时设置背景填充和字体加粗,再与表格主体合并,成功满足需求:

grid::grid.newpage()
grid.table(public[1:4,1:4], theme=myt)

rs = tableGrob(cbind("X\\Y"=rownames(public)[1:4]), 
               rows=NULL, 
               theme=ttheme_default(core=list(bg_params=list(fill="grey"), 
                                              fg_params=list(fontface="bold"))))

grid::grid.draw(gtable_combine(rs, tableGrob(public[1:4, 1:4], rows=NULL)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 10:13:20