【问题标题】:Map cell colors to data values in kableExtra to create a heatmap table将单元格颜色映射到 kableExtra 中的数据值以创建热图表
【发布时间】:2019-02-11 01:40:43
【问题描述】:

我有一张下表,想应用 ROW 级别的热图。

(1) 知道怎么做吗?现在,对于下面单行中的两个值,热图是相同的。

(2) 有没有办法使组列的标题不成 90 度角?现在所有标题都是有角度的,但对于组列,最好不使用 angle=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 表完全匹配。

【问题讨论】:

    标签: r latex r-markdown 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"
            )
           )
    ```
    

    【讨论】:

    • 知道如何从 kableExtra 获得带有该或首选使用 option="C" 托盘的红黄绿色托盘吗?
    • @epipi10 请参阅编辑。我认为这不适用于 NA。
    • 查看更新的代码。 replace 函数用于将缺失的颜色值(由于缺失数据)替换为浅灰色(每个 RGB 通道使用值 200,但您可以将其调整为 0 到 255 之间的任何值)。
    • 考虑在这里发布我的答案。处理 NA 的另一种方法是在 dplyr 中使用 case_when 来忽略缺失值。然后kable 将能够留下空白:stackoverflow.com/a/53681894/7347699
    猜你喜欢
    • 1970-01-01
    • 2010-10-04
    • 2021-11-03
    • 2020-11-26
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    相关资源
    最近更新 更多