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)