2015-10-21 2 views
2

Я прочитал превосходное объяснение Батист в функции tableGrob gridextra здесь: https://github.com/baptiste/gridextra/wiki/tableGrobR gridExtra: изменить тему «на лету» для одной таблицыGrob?

Из его раздела по эстетической форматированием:

tt1 <- ttheme_default() 
tt2 <- ttheme_minimal() 
tt3 <- ttheme_minimal(
    core=list(bg_params = list(fill = blues9[1:4], col=NA), 
      fg_params=list(fontface=3)), 
    colhead=list(fg_params=list(col="navyblue", fontface=4L)), 
    rowhead=list(fg_params=list(col="orange", fontface=3L))) 

grid.arrange(
    tableGrob(iris[1:4, 1:2], theme=tt1), 
    tableGrob(iris[1:4, 1:2], theme=tt2), 
    tableGrob(iris[1:4, 1:2], theme=tt3), 
    nrow=1) 

Интересно, можно ли изменить тему «на лету» для частности tableGrob, например, что-то вроде:

grid.arrange(
    tableGrob(iris[1:4, 1:2], theme=tt1 + theme_default(core=list(fg_params=list(cex=0.7))), 
    tableGrob(iris[1:4, 1:2], theme=tt2), 
    tableGrob(iris[1:4, 1:2], theme=tt3), 
    nrow=1) 

Этот последний блок кода не работает, но то, что я хотел сделать, это изменить тему «TT1» на лету изменить основной размер текста JUST для пихты st tableGrob, БЕЗ постоянного изменения темы «tt1».

Спасибо!

ответ

1

Темы представляют собой просто списки. Вы можете обновлять свойства списков с помощью modifyList. Например,

grid.arrange(
    tableGrob(iris[1:4, 1:2], theme=modifyList(tt1, list(core=list(fg_params=list(cex=0.7))))), 
    tableGrob(iris[1:4, 1:2], theme=tt2), 
    tableGrob(iris[1:4, 1:2], theme=tt3), 
    nrow=1) 
Смежные вопросы