2016-04-06 1 views
2

Я ищу, чтобы настроить определенные столбцы в моей таблицеGrob, для этого воспроизводимого примера я решил посмотреть, как настроить оправдание.Как настроить отдельные столбцы для таблицыGrob в R?

Допустим, вы имеете следующий dataframe:

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

И вы хотите использовать пакет gridExtra представить таблицу:

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

Вы можете настроить выравнивание столбцов, регулируя тему используемые для построения гун, например:

tt1 <- ttheme_default(core=list(fg_params=list(hjust= 0, x=0.05)), 
        colhead=list(fg_params=list(hjust=0, x=0.1))) 


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

Однако, это настраивает выравнивание для всех столбцов. Скажем, я просто хочу оставить оправдание Колонкой заказов и оставить остальных в их центральной позиции оправдания, как бы я это сделал?

Я экспериментировал с:

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) 

Но это только кажется, чтобы настроить построчно. Как настроить этот код для настройки по столбцу?

ответ

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) 

В recycling logic по умолчанию столбца мудрого, потому что чаще всего в таблице есть строки чередующихся цветов. Должны быть предусмотрены специальные параметры горизонтального выравнивания, чтобы сделать их более удобными для пользователя. Не стесняйтесь подавать пиар.

enter image description here

+0

удивительным @baptiste это работает! Хотя неудобно, как вы говорите :) Я недостаточно понимаю код, чтобы подать PR, но, надеюсь, я когда-нибудь туда приеду. –

Смежные вопросы