2012-10-11 41 views
8

Al crear una tabla con tableGrob o grid.table. ¿Hay forma de alinear el texto dentro de la tabla? ¿Primera columna a la izquierda y las otras columnas a la derecha? En lugar del "centro" predeterminado.Alinear texto cuando se utiliza tableGrob o grid.table en R

¡Gracias!

algo como esto: donde quiero la columna "a" alineada a la izquierda.

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

No estoy seguro de por qué esto es conseguir el voto para cerrar. Le falta un ejemplo reproducible pero no es realmente una pregunta localizada. –

+1

¿Podría compartirnos un poco su código y explicarnos más? – Ali

+0

Acabo de agregar el código. ¡Gracias! – tus

Respuesta

5

¿Esto es lo que estás buscando? Hay un parámetro core.just de la llamada 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

¡Gracias! La columna de la izquierda es exactamente como yo quería. Cuando ejecuto su código en mis datos, las entradas en las otras columnas se alinearon de manera diferente (algunas hacia el centro, otras hacia la izquierda). Tendrá que buscar el formato() en más detalles, para resolverlo. ¡Gracias! – tus

+1

quiero hacer que mi última columna y última fila aparezcan en negrita. por favor, hágame saber cómo se puede hacer. O puedo hacer todas las filas y columnas en negrita. http://stackoverflow.com/questions/29340345/make-first-and-last-row-of-a-dataframe-bold-using-tablegrob por favor ayuda –

4

Con gridExtra v> = 2.0.0, los parámetros ahora son controlados a través de listas anidadas (temas),

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) 
Cuestiones relacionadas