2012-10-11 14 views
8

Podczas tworzenia tabeli przy użyciu tableGrob lub grid.table. Czy istnieje sposób wyrównania tekstu w tabeli? Pierwsza kolumna po lewej, a pozostałe kolumny po prawej? Zamiast domyślnego "centrum".Wyrównaj tekst podczas korzystania z tableGrob lub grid.table w R

Dziękujemy!

coś takiego: gdzie chcę kolumnę "a" alligned po lewej stronie.

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

Nie jestem pewien, dlaczego to robi się głosowanie, aby zamknąć. Brakuje powtarzalnego przykładu, ale tak naprawdę nie jest to zlokalizowane pytanie. –

+1

Czy mógłbyś podzielić się z nami trochę swoim kodem i wyjaśnić więcej? – Ali

+0

Właśnie dodałem kod. Dziękuję Ci! – tus

Odpowiedz

5

Czy tego właśnie szukasz? Istnieje parametr core.just wywołania 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) 
+0

Dziękujemy! Lewa kolumna jest dokładnie taka, jak chciałem. Kiedy uruchomię twój kod na moich danych, dane wejściowe w innych kolumnach są wyrównane w różny sposób (niektóre do centrum, niektóre do lewej). Będzie musiał zbadać format() bardziej szczegółowo, aby to zrozumieć. Dziękuję Ci! – tus

+1

Chcę, aby ostatnia kolumna i ostatni wiersz były pogrubione. proszę dać mi znać, jak można to zrobić. Mogę albo wytłuc wszystkie wiersze i kolumny. http://stackoverflow.com/questions/29340345/make-first-and-last-row-of-a-dataframe-bold-using-tablegrob prosze o pomoc –

4

Z gridExtra v> = 2.0.0, parametry są obecnie kontrolowane przez zagnieżdżonych list (Motywy),

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) 
Powiązane problemy