我的问题与Baptiste的答案有关,您可以在这里找到:https : //stackoverflow.com/a/18667413/2072440。
该代码确实可以实现我想要的功能。我想作两个修改。首先,我想将第一栏中的文本向左对齐。其次,我想更改文本的字体。
我尝试编辑描述单元格背景填充的行,但这似乎并不影响字体,它只会影响框本身的位置,而不是框内文本的位置。
谢谢。
回顾网格系统的工作方式,尤其是查看,将很有用?grid.text
。网格系统将其绘图对象保存在“对象”(图形对象)中。令我惊讶的是,我发现“合理性”落后于我的预期(并且它是参考中心线而不是单元格的边缘)。如果在"g"
引用的页面上的-object上运行此代码,则可能期望文本向右移动,而实际上向左移动。
g$grobs[c(6:8, 10:12, 14:16, 18:20, 22:24)] <-
lapply(g$grobs[c(6:8, 10:12, 14:16, 18:20, 22:24)],
function(x) modifyList( x, list(just="right") ) )
grid.draw(g)
为了更改字体,您需要将“ x”参数的gp节点设置为具有不同结构的列表(不同于空列表)。请参见`?gpar'了解其接受的参数:
str(g$grobs[[6]])
List of 11
$ label : chr "5.1"
$ x :Class 'unit' atomic [1:1] 0.5
.. ..- attr(*, "unit")= chr "npc"
.. ..- attr(*, "valid.unit")= int 0
$ y :Class 'unit' atomic [1:1] 0.5
.. ..- attr(*, "unit")= chr "npc"
.. ..- attr(*, "valid.unit")= int 0
$ just : chr "centre"
$ hjust : chr "left"
$ vjust : NULL
$ rot : num 0
$ check.overlap: logi FALSE
$ name : chr "GRID.text.1032"
$ gp : list()
..- attr(*, "class")= chr "gpar"
$ vp : NULL
g$grobs[c(6:8, 10:12, 14:16, 18:20, 22:24)] <-
lapply(g$grobs[c(6:8, 10:12, 14:16, 18:20, 22:24)],
function(x) modifyList( x, list(gp=list(cex=0.8) ) ) )
grid.newpage()
grid.draw(g)
或使用fontsize参数:
g$grobs[c(6:8, 10:12, 14:16, 18:20, 22:24)] <-
lapply(g$grobs[c(6:8, 10:12, 14:16, 18:20, 22:24)],
function(x) modifyList( x, list(gp=list(fontsize=14, cex=1) ) ) )
grid.newpage()
grid.draw(g)
要更改gtable对象的对正,可以“调整” grob中的$x
元素:
g$grobs[c(6:8, 10:12, 14:16, 18:20, 22:24)] <-
lapply(g$grobs[c(6:8, 10:12, 14:16, 18:20, 22:24)],
function(z) modifyList( z, list(x=unit(0.1,"npc"), just="left") ) )
g$grobs[c(6:8, 10:12, 14:16, 18:20, 22:24)] <-
lapply(g$grobs[c(6:8, 10:12, 14:16, 18:20, 22:24)],
function(x) modifyList( x, list(gp=list(fontsize=16, cex=1) ) ) )
grid.draw(g)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句