12

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

3 回答 3

9

使用 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)
于 2015-08-04T06:28:00.190 回答
7

这是你想要的?有调用的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)
于 2012-10-11T17:44:13.157 回答
1

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

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)
于 2020-07-08T16:37:13.300 回答