数据表 R 中的调色板

Color Palettes in datatables R

好奇为什么我们不能在 datatables 上应用发散类型样式。

在下面的代码中,iris 没有 NA,为了简单起见,我想对 150 个条目应用发散方案。所有列都会将颜色应用到 Sepal.Length 排名,但是按列来做是微不足道的...

library(DT);library(colorspace);library(dplyr)
data(iris)
dt=datatable(iris) 

for (x in colnames(iris)) {
  if(x=='Species')next
  dt=dt %>% 
    formatStyle(x, color = tolower(diverging_hsv(150)[rank(iris$Sepal.Length)]))
}

没有报告错误,但这不起作用

注意带有 NA 的不同数据集会弄乱颜色:

dt <- datatable(airquality) 

these=c('Wind','Ozone')
for (x in these) {
  #v <- full_seq(unique(airquality[[x]]), .1)
  v = airquality[[x]]
  cs <- diverging_hsv(length(v))
  dt <- dt %>% 
    formatStyle(x, backgroundColor = styleEqual(v, cs))
}

您似乎无法将值向量直接传递给 formatStyle() 的颜色参数,而是可以使用辅助函数 styleEqual() 将值映射到颜色 1 到 1 :

library(DT)
library(colorspace)
library(dplyr)
library(tidyr)

dt <- datatable(iris) 

for (x in colnames(iris)) {
  if (x == 'Species') next 
  v <- full_seq(unique(iris[[x]]), .1)
  cs <- diverging_hsv(length(v))
  dt <- dt %>% 
    formatStyle(x, color = styleEqual(v, cs))
}