首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gtable中的文本对齐和字体大小

gtable中的文本对齐和字体大小
EN

Stack Overflow用户
提问于 2013-11-12 16:26:46
回答 2查看 2.2K关注 0票数 2

我的问题与巴普蒂斯特的回答有关,你可以在这里找到答案:https://stackoverflow.com/a/18667413/2072440

这段代码能做我想做的事。我想作两项修改。首先,我想将第一栏中的文本与左边对齐。第二,我想改变文字的字体。

我试图编辑描述单元格背景填充的行,但它似乎不会影响字体,它只会影响框本身的位置,而不会影响它们中的文本。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-12 20:21:35

检查网格系统是如何工作的,特别是查看?grid.text,这将是非常有用的。网格系统将其绘图对象保存在“grobs”(图形对象)中。令我感到惊讶的是,“正当理由”与我所期望的完全相反(而且它引用的是中心线,而不是单元格的边缘)。如果您从引用的页面在"g"-object上运行这段代码,您可能希望文本向右移动,而它实际上会向左移动。

代码语言:javascript
复制
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”:

代码语言:javascript
复制
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参数:

代码语言:javascript
复制
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元素:

代码语言:javascript
复制
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)

票数 4
EN

Stack Overflow用户

发布于 2014-06-16 11:20:31

我有在gtable中添加了一个表函数更多选择

不幸的是,它真的很慢(对于网格图形来说也不足为奇)。

代码语言:javascript
复制
require(gtable)

d <- head(iris, 3)

core <- gtable_table(d,
                     fg.par = list(col=1:8, hjust=0, x=0.1),
                     bg.par = list(fill=9:15, alpha=0.5))

colhead <- gtable_table(t(colnames(d)), fg.par = list(fontface=4),
                        bg.par = list(col=NA))

rowhead <- gtable_table(c("", rownames(d)), fg.par = list(fontface=3),
                        bg.par = list(col=NA))

g <- rbind(colhead, core)
g <- cbind(rowhead, g)

grid.newpage()
grid.draw(g)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19934523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档