这将根据需要创建时间线,并添加一个内容列,将每个时间线的“名称”显示为Timeline {id}.
library(timevis)
library(shiny)
df <- data.frame(id =c(1,2),
time1 =c('2019-01-08 20:00:00','2019-01-08 20:30:00'),
time2 =c('2019-01-08 21:00:00','2019-01-08 21:10:00'))
ui <- fluidPage(uiOutput("timelines"))
server <- function(input, output) {
colnames(df) <- c("id", "start", "end")
df$content = paste0("Timeline ", df$id)
timelines <- sapply(1:nrow(df), function(i) {
renderTimevis(timevis(df[i,]))
})
output$timelines <- renderUI(timelines)
}
shinyApp(ui, server)
这会为每个时间线添加单独的标签,而不是使用内容列。
library(timevis)
library(shiny)
df <- data.frame(id =c(1,2),
time1 =c('2019-01-08 20:00:00','2019-01-08 20:30:00'),
time2 =c('2019-01-08 21:00:00','2019-01-08 21:10:00'))
ui <- fluidPage(uiOutput("timelines"))
server <- function(input, output) {
timelines <- sapply(1:nrow(df), function(i) {
timeline <- timevis(showZoom = FALSE, options = list(margin.axis = 100)) %>%
addItems(data.frame(start = c(df[i, "time1"], df[i, "time2"]),
content = c("Time1", "Time2"))) %>%
centerTime(df[i, "time1"],list(animation=FALSE)) %>%
fitWindow(list(animation=FALSE))
tagList(list(renderText(paste0("Timeline ", i)), renderTimevis(timeline)))
})
output$timelines <- renderUI({
timelines
})
}
shinyApp(ui, server)
由于某种原因,在另一台计算机上出现了日期/时间问题。
我添加了这个,它似乎解决了这个问题。
df$time1 <- as.POSIXct(df$time1,format="%Y-%m-%d %H:%M:%S")
df$time2 <- as.POSIXct(df$time2,format="%Y-%m-%d %H:%M:%S")
