如何用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
相关产品推荐
相关产品推荐

