利用优秀的 R timevis 包中的分组功能有很好的记录,并且在 timevis::timevis() 的帮助页面中提供了示例。
该文档还说可以定义子组,其中
“按子组将组内的所有项目分组,并将它们放置在相同的高度,而不是将它们堆叠在一起。”
我无法理解如何使用此功能。例如,在下面的示例中,我希望“事件 1”和“事件 2”被定义为它们自己的子组,因此它们将位于相同的高度。然而,这种情况并非如此。
timedata <- data.frame(
id = 1:6,
start = Sys.Date() + c(1, - 10, 4, 20, -10, 10),
end = c(rep(as.Date(NA), 4), Sys.Date(), Sys.Date() + 20),
group = c(1,1,1,2,2,2),
content = c("event 1", "event 2", "event 2", "event 1", "range 1", "range 1"),
subgroup = c("1.1", "1.2", "1.2", "2.1", "2.2", "2.2")
)
groups <- data.frame(id = c(1,2), content = c("g1", "g2"))
timevis::timevis(data =timedata, groups = groups)
Run Code Online (Sandbox Code Playgroud)
如何正确利用子组功能?
这个问题已经在这里提出了,但是由于没有答案,我想我会再举一个简单的例子,以期找到答案。
问题是,当使用renderUI()动态构建滑块时,sliderInput()的动画选项不起作用。
因此,尽管这很好用:
# works
library(shiny)
shinyApp(
ui = fluidPage(
sliderInput("animationSlider", "non-dynamic animation slider",
min = 1, max = 100, value = 1, step = 1,
animate = animationOptions(200)),
textOutput("sliderValue")
),
server = function(input, output) {
output$sliderValue <- renderText(paste("value:", input$animationSlider))
}
)
Run Code Online (Sandbox Code Playgroud)
这不起作用:
#doesn't work
library(shiny)
shinyApp(
ui = fluidPage(
numericInput("max", "Set max value for dynamic animation slider",
value = 10),
uiOutput("animationSlider"),
textOutput("sliderValue")
),
server = function(input, output) {
output$animationSlider <- renderUI({
sliderInput("animationSlider", "Dynamic animation slider", …Run Code Online (Sandbox Code Playgroud)