2012-10-11 17 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)