Сопоставьте цвета ячеек со значениями данных в kableExtra для создания таблицы тепловых карт - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть таблица ниже, и я хотел бы применить тепловые карты уровня 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 Ответ

0 голосов
/ 06 сентября 2018

Я на самом деле не уверен, как получить желаемое цветовое отображение от 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"
        )
       )
```

enter image description here

...