2016-04-06 13 views
2

Masaüstümdeki belirli sütunları özelleştirmeye çalışıyorumGrob, bu tekrarlanabilir örnek için gerekçelendirmeyi özelleştirmeyi seçtim. R içinde tableGrob için belirli sütunları nasıl özelleştiririm?

aşağıdaki dataframe olduğunu varsayalım:

df <- data.frame(Order = c(1:3), Name = c("Adam", "Ben", "Charlie"), Score = c(4, 8, 9)) 

Ve tabloyu sunmak için paket gridExtra kullanmak istiyorum: Sen temasını ayarlayarak sütun hizalamasını

dfGrob <- tableGrob(df, rows = NULL) 
grid.arrange(dfGrob) 

grob'u yapmak için kullanılır, örneğin:

Ancak, Bu, tüm sütunların gerekçesini ayarlar. Ben sadece sipariş sütununu haklı çıkarmak ve diğerlerini merkezi haklılaştırma pozisyonunda bırakmak istediğimi söyle, nasıl yaparım?

Ben ile denemişlerdir:

tt1 <- ttheme_default(core=list(fg_params=list(hjust= c(0, 0.5, 0.5), x=c(0.15, 0.5, 0.5))), 
        colhead=list(fg_params=list(hjust=1, x=0.95))) 

dfGrob <- tableGrob(df, rows = NULL, theme = tt1) 
grid.arrange(dfGrob) 

Ama bu sadece satırla özelleştirmek gibi görünüyor. Bunun yerine sütuna göre özelleştirmek için bu kodu nasıl ayarlayabilirim? daha çok masa alternatif renk satırları olduğundan

cevap

3

,

library(grid) 
library(gridExtra) 

df <- data.frame(Order = c(1:3), 
       Name = c("Adam", "Ben", "Charlie"), 
       Score = c(4, 8, 9)) 

hj <- matrix(c(0, 0.5, 1), ncol=3, nrow=nrow(df), byrow=TRUE) 
x <- matrix(c(0, 0.5, 1), ncol=3, nrow=nrow(df), byrow=TRUE) 

tt1 <- ttheme_default(core=list(fg_params=list(hjust = as.vector(hj), 
               x = as.vector(x))), 
         colhead=list(fg_params=list(hjust=1, x=0.95))) 


dfGrob <- tableGrob(df, rows = NULL, theme = tt1) 
grid.newpage() 
grid.draw(dfGrob) 

, kolona bilgelere recycling logic varsayılan o biraz destek olduğunu ancak tüm unsurları için parametreleri belirtebilirsiniz. Bunu, biraz daha kullanıcı dostu hale getirmek için yatay gerekçelendirme parametrelerini özel duruma getirmek mümkün olmalıdır. Bir PR göndermek için çekinmeyin.

enter image description here

+0

awesome @baptiste bu harika çalışıyor! Her ne kadar dürüst olsanız da :) Ben bir PR göndermek için yeterince iyi kod anlamıyorum ama umarım birgün oraya gelir. –