DT 单元格悬停显示来自隐藏列的基于单元格的样本大小

DT cell hover showing cell based sample sizes from hidden column

我之前问过如何根据存储在隐藏列中的颜色为单元格着色 (). I saw that it is also possible to apply hover information for (DT) tables via and post.

我想扩展我的初始 post,我想在其中添加悬停选项以显示与单个单元格相关的样本大小。这些样本大小未显示在 table 中(即隐藏),但仅在悬停时显示。我真的在推动我对 Java 的了解来完成这项工作。

从我最初的 post 开始,输入数据框可能如下所示:

dat <- iris[1:5,1:5]
colours2apply <- sample(x=c(rgb(1, 0, 0 ), rgb(1, 1, 0 ), rgb(0, 1, 1 )), 25, replace = T) %>% 
  matrix(nrow=5) %>% 
  data.frame()
set.seed(1234)
SampleSizesToShowInHover <- matrix(round(runif(n = 25, 10, 1000)), nrow=5)

  dat <- cbind(dat, colours2apply)
  dat <- cbind(dat, SampleSizesToShowInHover)
dat

根据我之前 post 的回答,此代码添加了基于单元格的着色:

DT <- datatable(dat, 
                options = list(columnDefs = list(list(visible=FALSE, targets = 6:10))))
for(i in 1:5){
  DT <- DT %>%
    formatStyle(i, valueColumns = i+5, backgroundColor = JS("value"))
}
DT

除了着色之外,如何添加基于单元格的悬停信息?

您可以简单地向选项参数添加一个 rowcallback 以从隐藏列获取 toopltip。像这样:

DT <- datatable(dat, 
                options = list(columnDefs = list(list(visible=FALSE, targets = 6:10)), rowCallback = JS(
                  "function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {",
                  "$('td:eq(1)', nRow).attr('title',aData[1+5]);",
                  "$('td:eq(2)', nRow).attr('title',aData[2+5]);",
                  "$('td:eq(3)', nRow).attr('title',aData[3+5]);",
                  "$('td:eq(4)', nRow).attr('title',aData[4+5]);",
                  "$('td:eq(5)', nRow).attr('title',aData[6+5]);",
                  "}")))

[编辑]:

你可以在循环中做同样的事情,如下所示:

DT <- datatable(dat, 
                options = list(columnDefs = list(list(visible=FALSE, targets = 6:10)), rowCallback = JS(
                  "function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {",
                  'for(i=0; i<5; i++ ){',
                  "$('td:eq('+i+')', nRow).attr('title',aData[i+5]);",
                  '}',
                  "}")))