Вот очень простой наивный способ добиться того, чего вы хотите.Основываясь на вашем сценарии использования и количестве различных значений (будь то статическое или динамическое число), вы можете захотеть сделать что-то более умное, но это должно быть хорошим началом.Вы также можете добавить больше CSS, чтобы контур каждого блока не был синим.По сути, все, что я здесь делаю, - это использование параметра className
timevis для назначения разных классов каждому Date_Bucket и добавление CSS для каждого из этих классов.
library(shiny)
library(timevis)
file$Start <- as.Date(file$Start)
file$End <- as.Date(file$End)
cols <- c("redBg", "blueBg", "greenBg", "orangeBg")
file$className <- cols[file$Date_Bucket]
shinyApp(
ui = fluidPage(
tags$style(
".redBg { background: red; }
.blueBg { background: blue; }
.greenBg { background: green; }
.orangeBg { background: orange; }"
),
timevisOutput("timeline"),
actionButton("btn", "Fit all items")
),
server = function(input, output) {
output$timeline <- renderTimevis(
timevis(data.frame(
id = file$Record_ID, start = file$Start , end = file$End, content =
file$Date_Bucket, className = file$className
))
)
observeEvent(input$btn, {
fitWindow("timeline", list(animation = TRUE))
})
}
)