Shiny Rhandsontable - Renderer - Используйте цвет из фактора (Pallete)

У меня есть набор данных, в котором я создал столбец с цветовыми кодами на основе другого столбца.

 colourCount = length(unique(Desc.File$VARIABLECODE))
getPalette = colorRampPalette(brewer.pal(9, "Set1"))
Colors <- getPalette(colourCount) 

Desc.File$ColorCode <- factor(Desc.File$VARIABLECODE, labels = Colors)

Созданный объект представляет собой список цветовых кодов HEX.

"#E41A1C" "#D42229" "#C52B37" "#B63445" "#A73D52" "#974560" "#884E6E" "#79577C" "#6A6089" "#5B6997" "#4B71A5" "#3C7AB2" "#3880B1" "#3A85A8" "#3C899E" "#3E8D94" "#3F918B" "#419681" "#439A77" "#459E6E" "#47A364" "#49A75A"

В этом столбце я выбираю цвета для сюжета, и я также хотел бы использовать те же цвета на цвете фона / текста в Rhandsontable.

color_renderer = "function(instance, td, row, col, prop, value, cellProperties) {
Handsontable.renderers.TextRenderer.apply(this, arguments);

clr   = instance.params.ColorCode

td.style.background=  hex(clr[row])
}
"

colnames(Summary.tab) <- c("Code", "Brand", "Type", "Description", "Metric", "ColorCode", "Execution", "Cost")
Summary.tab <- data.frame(Check=rep(TRUE, n),Summary.tab)
DT = rhandsontable(Summary.tab, readOnly = FALSE, rowHeaders= NULL, useTypes= TRUE, selectCallback = TRUE) %>% hot_col("Code", renderer=color_renderer)

Я пытаюсь использовать средство визуализации, чтобы взять цвета из цветового столбца в моем наборе данных, а затем использовать его в качестве цвета фона, но это не работает. (Я никогда не кодировал JS раньше, поэтому я не знаю, что я делаю)

Пожалуйста помоги:)

0 ответов

Вам нужно передать параметр ColorCode к rhansontable, только тогда вы можете подобрать его в функции рендерера. Вот пример:

library(shiny)
library(rhandsontable)

color_renderer = "
    function(instance, td, row, col, prop, value, cellProperties) {
        Handsontable.renderers.TextRenderer.apply(this, arguments);
        if (instance.params) {
            clr = instance.params.ColorCode
            clr = clr instanceof Array ? clr : [clr]
            td.style.background =  clr[row]
        }

    }"

set.seed(12345)
Desc.File <- data.frame(VARIABLECODE = sample(letters, 10, replace = TRUE))

colourCount <- length(unique(Desc.File$VARIABLECODE))
getPalette <- colorRampPalette(RColorBrewer::brewer.pal(9, "Set1"))
colors <- getPalette(colourCount) 

Desc.File$ColorCode <- factor(Desc.File$VARIABLECODE, labels = colors)


ui <- fluidPage(
    rHandsontableOutput("table")
)

server <- function(input, output) {

    output$table <- renderRHandsontable({
        rhandsontable(Desc.File, ColorCode = Desc.File$ColorCode) %>% 
            hot_cols(renderer = color_renderer)
    })

}

shinyApp(ui = ui, server = server)
Другие вопросы по тегам