Сопоставьте цвета ячеек со значениями данных в kableExtra для создания таблицы тепловых карт

У меня есть таблица ниже, и я хотел бы применить тепловые карты уровня ROW.

(1) Есть идеи как? Сейчас тепловая карта одинакова для обоих значений в единственном ряду ниже.

(2) Есть ли способ сделать заголовок для столбца группы НЕ наклоненным на 90 градусов? Прямо сейчас все заголовки расположены под углом, но для столбца группы лучше без угла =90.

вот файл rmd

---
title: "Untitled"
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)


library(dplyr)
library(kableExtra)
#d = data.frame(group= c("A","b"),cat1=c(2,50),cat2=c(100,2))
d = data.frame(group= c("A"),cat1=c(2),cat2=c(NA))

d = d %>%
    mutate_if(is.numeric, function(x) {
  cell_spec(x, "latex", bold = F, background = spec_color(x,option="C", begin=.5, end = 0.99))
}) 

```



```{r table , echo= FALSE, comment = FALSE, message= FALSE, warning = FALSE, fig.height=3, fig.width = 8} 

kable(
      d, format ="latex",
      caption = "",
      booktabs = T, 
      longtable = T,
      escape = F ,
      align = "c"
      ) %>% kable_styling(latex_options = c(
        "striped", 
        "repeat_header"
        )
       )%>% row_spec( 0,angle = 90)


```

Примечание. В идеале было бы хорошо сделать это с помощью функциональности kableExtra, чтобы их цветовые схемы точно соответствовали другим таблицам kableExtra.

1 ответ

Я на самом деле не уверен, как получить желаемое цветовое сопоставление от spec_color, В качестве альтернативы в приведенном ниже коде я сгенерировал цветовое отображение, используя colorRamp функция и функция создания палитры, которая может быть настроена по желанию. Код также обрабатывает пропущенные значения, окрашивая их в светло-серый цвет.

---
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(viridis)
library(dplyr)
library(kableExtra)

set.seed(2)
d = data_frame(group = sample(LETTERS[1:5], 10, replace=TRUE), cat1=runif(10, 0, 100), cat2=runif(10, 0, 100))
d[5,2] = NA

max.val = max(d[ , sapply(d, is.numeric)], na.rm=TRUE)

#pal.fnc = colorRamp(viridis_pal(option="C")(2))
pal.fnc = colorRamp(c("red", "yellow", "green"))

d = d %>%
    mutate_if(is.numeric, function(x) {
  cell_spec(round(x,1), "latex", bold = F, color=grey(.3),
            background = rgb(pal.fnc(x/max.val) %>% replace(., is.na(.), 200), maxColorValue=255))
}) 

```

```{r table , echo= FALSE, comment = FALSE, message= FALSE, warning = FALSE, fig.height=3, fig.width = 8} 
kable(
      d, format ="latex",
      linesep="",
      caption = "",
      booktabs = T, 
      longtable = T,
      escape = F ,
      align = "c"
      ) %>% kable_styling(latex_options = c(
        "striped", 
        "repeat_header"
        )
       )
```

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

Другие вопросы по тегам