Цвет формата конкретной строки таблицы

Есть ли способ указать tableGrob через темы изменить цвет и формат (выделить жирным шрифтом) определенной строки?

Я получаю следующий результат, используя tableGrob:

Однако я хотел бы достичь следующей эстетики и выделить определенные линии жирным шрифтом и изменить их цвет, как в этом примере:

На основе следующего примера: введите здесь описание ссылки

 t1 <- ttheme_default(core=list(
        fg_params=list(fontface=c(rep("plain", 4), "bold.italic")),
        bg_params = list(fill=c(rep(c("grey95", "grey90"),
                                    length.out=4), "#6BAED6"),
                         alpha = rep(c(1,0.5), each=5))
        ))

grid.table(iris[1:5, 1:3], theme = t1)

Цвет строки меняется каждые 4 строки. что приводит к следующему: результат

Однако мне нужно сделать это конкретным в зависимости от состояния.


person KRStam    schedule 16.01.2018    source источник
comment
Пожалуйста, добавьте к вашему вопросу воспроизводимый пример. И вы можете легко добиться желаемого результата с помощью kableExtra   -  person pogibas    schedule 16.01.2018
comment
Вы согласны с другими пакетами или хотите придерживаться tableGrob?   -  person pogibas    schedule 16.01.2018
comment
@PoGibas Спасибо за ответ. Да, к сожалению, мне приходится придерживаться tableGrob, насколько мне известно, это единственный способ создавать отчеты по сеткам и комбинировать графики (ggplot2) и таблицы на одной странице с сетками. Я добился этого, но я не знаю, как изменять цвета и форматировать определенные строки с помощью tableGrob. Моя организация не позволяет запускать R-studio или html, поэтому kableExtra может оказаться недостижимым решением.   -  person KRStam    schedule 16.01.2018
comment
Не составит труда обобщить stackoverflow.com / questions / 18414001 / и просто измените параметры фона.   -  person hrbrmstr    schedule 16.01.2018
comment
Просто создайте вектор цветов, равный количеству строк ваших данных. например. dat <- iris[1:10, 1:3] ; cols <- rep("grey95", nrow(dat)) ; rowsToChange <- c(1,5,9) ; cols[rowsToChange] <- "red" ; t1 <- ttheme_default(core=list(bg_params = list(fill=cols))) ; grid.table(iris[1:10, 1:3], theme = t1)   -  person user20650    schedule 17.01.2018


Ответы (1)


Если ткнуть в ссылку в моем комментарии, как "найти" гробов, то можно делать такие вещи, как:

library(grid)
library(gridExtra)

tg <- tableGrob(iris[1:5, 1:3])

for (i in c(19,24,29)) tg$grobs[[i]] <- editGrob(tg$grobs[[i]], gp=gpar(col="white"))
for (i in c(34,39,44)) tg$grobs[[i]] <- editGrob(tg$grobs[[i]], gp=gpar(fill="blue"))

grid.newpage()
grid.draw(tg)

введите здесь описание изображения

Если это обычный параметризованный отчет, то это обычная операция по определению позиций ячеек и применению вашего пользовательского форматирования.

В противном случае определенно разработайте набор функций стилизации для нацеливания на «ячейки», как в таблицах Google или Excel.

person hrbrmstr    schedule 16.01.2018
comment
Спасибо за ответ. Да, это действительно обычный параметризованный отчет, и я заранее знаю количество и положение строк, которые необходимо сформировать и выделить жирными буквами и синим контуром. Так, например, мне нужно, чтобы строки 3,6,8,11,12,13 были отмечены синей линией. Я действительно не понимаю ситуацию с tableGrob и то, как настроить таргетинг на определенные строки. Еще раз спасибо за ваше время, и мы очень ценим любые советы. - person KRStam; 16.01.2018