2012-10-11 50 views
8

使用tableGrob或grid.table创建表时。 有没有办法对齐表格中的文字?第一列在左边,其他列在右边?而不是默认的“中心”。在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")    
) 
+2

我不知道为什么,这是获得投票关闭。这是缺乏可重复的例子,但它不是一个真正的本地化问题。 –

+1

您能否与我们分享一下您的代码,并解释更多? – Ali

+0

我刚添加了代码。谢谢! – tus

回答

5

这是你在找什么? 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) 
+0

谢谢!左列与我想要的完全一致。当我在我的数据上运行代码时,其他列中的输入按不同方式排列(一些到中心,一些到左侧)。将需要更详细地研究格式(),以弄清楚这一点。谢谢! – tus

+1

我想使我的最后一列和最后一行为粗体。请让我知道如何做到这一点。我可以将所有行和列加粗。 http://stackoverflow.com/questions/29340345/make-first-and-last-row-of-a-dataframe-bold-using-tablegrob请帮忙 –

4

随着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)