在R中使用tableGrob或grid.table时对齐文本

时间:2012-10-11 16:30:55

标签: r

使用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")            
) 

3 个答案:

答案 0 :(得分:6)

这是你在找什么? core.just来电有一个format()参数。

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)

答案 1 :(得分:5)

使用gridExtra v&gt; = 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 :(得分:0)

要设置“透明”背景,请使用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)