【问题标题】:Align text when using tableGrob or grid.table in R在 R 中使用 tableGrob 或 grid.table 时对齐文本
【发布时间】:2020-07-09 00:37:13
【问题描述】:

使用 tableGrob 或 grid.table 创建表时。 有没有办法对齐表格内的文字?第一列在左边,其他列在右边?而不是默认的“中心”。

谢谢!

类似这样:我希望列“a”对齐到左侧。

a <- c("one","two","thirty five")
b <- c(1, 2, 3)
c <- c(4, 5, 6)

data <- data.frame(a,b,c)

windows()

grid.table(
  data,
  gpar.coretext=gpar(fontsize = 12),            
  gpar.coltext = gpar(fontsize = 12),            
  gpar.rowtext = gpar(fontsize = 12),            
  gpar.corefill = 
    gpar(fill = "green", alpha = 0.5, col = NA),           
  h.even.alpha = 0.5,            
  equal.width = FALSE,            
  show.rownames = FALSE,            
  show.vlines = TRUE,           
  padding.h = unit(15, "mm"),            
  padding.v = unit(8, "mm")            
) 

【问题讨论】:

  • 我不知道为什么这会让投票结束。它缺乏可重复的示例,但这并不是一个真正的本地化问题。
  • 能否请您分享一些您的代码,并解释更多?
  • 我刚刚添加了代码。谢谢!

标签: r


【解决方案1】:

使用 gridExtra v>=2.0.0,参数现在通过嵌套列表(主题)控制,

library(gridExtra)
library(grid)
n=5
d <- data.frame(x=rnorm(n),y=rnorm(n),z=sample(letters[1:2],n,replace=T))

m <- format(d, digits = 1, scientific=F,big.mark = ",")

mytheme <- ttheme_default(core = list(fg_params = list(hjust=0, x=0.1, 
                                                       fontsize=8)),
                          colhead = list(fg_params = list(fontsize=9, 
                                                          fontface="bold"))
                          )
g1 <- tableGrob(m, theme = mytheme, rows=NULL)
grid.newpage()
grid.draw(g1)

【讨论】:

    【解决方案2】:

    这就是你要找的吗? format() 调用有一个core.just 参数。

    require("gridExtra")
    
    n=5
    df<- data.frame(x=rnorm(n),y=rnorm(n),z=sample(letters[1:2],n,replace=T))
    
    
    g1<-tableGrob(
    format(df, digits = 1,
         scientific=F,big.mark = ","),
         core.just="left",
         #core.just="right",
         #col.just="right",
         gpar.coretext=gpar(fontsize=8), 
         gpar.coltext=gpar(fontsize=9, fontface='bold'), 
         show.rownames = F,
         h.even.alpha = 0,
         gpar.rowtext = gpar(col="black", cex=0.7,
                                equal.width = TRUE,
                                show.vlines = TRUE, 
                                show.hlines = TRUE,
                                separator="grey")                     
    )
    
    grid.draw(g1)
    

    【讨论】:

    • 谢谢!!!左栏正是我想要的。当我在我的数据上运行您的代码时,其他列中的输入对齐方式不同(一些在中心,一些在左边)。必须更详细地研究 format() 才能弄清楚这一点。谢谢!
    • 我想将最后一列和最后一行设为粗体。请让我知道怎么做。我要么能够使所有的行和列都加粗。 stackoverflow.com/questions/29340345/…请帮忙
    【解决方案3】:

    要设置“透明”背景,请使用ttheme_minimalhjust 设置文本对齐方式。

    theme_1 <- ttheme_minimal(core = list(fg_params = list(hjust = 0, 
                                                               x = 0.1, 
                                                        fontsize = 9)),
                              colhead = list(fg_params = list(fontsize = 12, 
                                                              fontface = "bold")))
    

    然后您可以像这样将主题应用到tableGrob

    gridExtra::tableGrob(df_tbl, theme = theme_1, rows=NULL)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多