如何根据 DT::datatable 中的列值对列单元格进行着色 r
How to color column cells according to the column values in DT::datatable in r
根据 this link,数据table 可以像热图一样按其值着色。但是这里的单元格根据所有列的值进行着色。
library(DT)
df = iris[1:4]
brks <- quantile(df, probs = seq(.05, .95, .05), na.rm = TRUE)
clrs <- round(seq(255, 40, length.out = length(brks) + 1), 0) %>%
{paste0("rgb(255,", ., ",", ., ")")}
datatable(df) %>% formatStyle(names(df), backgroundColor = styleInterval(brks, clrs))
但我需要的是根据每列 的值 为列单元格着色。一般我觉得这个比较有用。实际上,每一列的比例可能不同。
有人知道如何使用 DT 包实现吗?我需要在闪亮的应用程序中为 table 上色。非常感谢!
是的,对于每一列,您可以计算间隔、分配颜色和应用样式:
library(DT)
library(viridis)
df = iris[1:4]
brks1 <- quantile(df$Sepal.Length, probs = seq(.05, .95, .05), na.rm = TRUE)
clrs1 <- viridis::viridis(n=length(brks1)+1, alpha=.5, direction = -1)
brks2 <- quantile(df$Petal.Length, probs = seq(.05, .95, .05), na.rm = TRUE)
clrs2 <- viridis::inferno(n=length(brks2)+1, alpha=.5, direction = -1)
datatable(df) %>%
formatStyle("Sepal.Length", backgroundColor = styleInterval(brks1, clrs1)) %>%
formatStyle("Petal.Length", backgroundColor = styleInterval(brks2, clrs2))
根据 this link,数据table 可以像热图一样按其值着色。但是这里的单元格根据所有列的值进行着色。
library(DT)
df = iris[1:4]
brks <- quantile(df, probs = seq(.05, .95, .05), na.rm = TRUE)
clrs <- round(seq(255, 40, length.out = length(brks) + 1), 0) %>%
{paste0("rgb(255,", ., ",", ., ")")}
datatable(df) %>% formatStyle(names(df), backgroundColor = styleInterval(brks, clrs))
但我需要的是根据每列 的值 为列单元格着色。一般我觉得这个比较有用。实际上,每一列的比例可能不同。
有人知道如何使用 DT 包实现吗?我需要在闪亮的应用程序中为 table 上色。非常感谢!
是的,对于每一列,您可以计算间隔、分配颜色和应用样式:
library(DT)
library(viridis)
df = iris[1:4]
brks1 <- quantile(df$Sepal.Length, probs = seq(.05, .95, .05), na.rm = TRUE)
clrs1 <- viridis::viridis(n=length(brks1)+1, alpha=.5, direction = -1)
brks2 <- quantile(df$Petal.Length, probs = seq(.05, .95, .05), na.rm = TRUE)
clrs2 <- viridis::inferno(n=length(brks2)+1, alpha=.5, direction = -1)
datatable(df) %>%
formatStyle("Sepal.Length", backgroundColor = styleInterval(brks1, clrs1)) %>%
formatStyle("Petal.Length", backgroundColor = styleInterval(brks2, clrs2))