R中vistime可滚动时序图固定绘图高度实现行滚动的方法咨询
vistime固定绘图高度、滚动查看行内容实现方案
实现核心是修改vistime生成的plotly对象的交互配置,放开y轴缩放限制同时固定画布高度,具体操作如下:
基础实现代码(直接渲染场景)
library(vistime) library(plotly) # 示例数据,可替换为你的实际业务数据 test_data <- data.frame( event = paste0("事项", 1:30), start = Sys.Date() + sample(1:20, 30, replace = T), end = Sys.Date() + sample(21:40, 30, replace = T), group = paste0("组别", rep(1:15, each = 2)) ) # 生成vistime对象 timeline_p <- vistime(test_data) # 修改plotly布局和交互配置 timeline_p <- timeline_p %>% layout( height = 600, # 自行调整需要固定的绘图高度,单位为px yaxis = list(fixedrange = FALSE), # 放开y轴缩放限制,vistime默认锁定y轴缩放 xaxis = list(fixedrange = TRUE) # 可选配置,锁定x轴时间轴不被缩放 ) %>% config(scrollZoom = "y") # 仅开放y轴滚动缩放能力,避免误操作时间轴 # 渲染即可看到效果,鼠标滚轮在绘图区域滚动即可上下查看所有行 timeline_p
特殊嵌入场景适配
- Rmarkdown嵌入场景:在代码块前添加以下CSS样式,确保溢出内容可滚动
<style> .plotly.html-widget { overflow-y: auto !important; } </style>
- Shiny嵌入场景:在plotlyOutput外层套一个固定高度、允许纵向滚动的div容器即可
ui <- fluidPage( div( plotlyOutput("vistime_plot", height = "100%"), style = "height: 600px; overflow-y: auto;" ) ) server <- function(input, output) { output$vistime_plot <- renderPlotly({ # 此处返回上面修改好配置的timeline_p对象即可 timeline_p }) } shinyApp(ui, server)
注意事项
- 无需手动设置y轴范围,plotly会自动适配总数据高度,滚动时会自动加载展示超出固定高度的行
- 如果不需要锁定x轴时间轴,删除
xaxis = list(fixedrange = TRUE)配置即可
内容的提问来源于stack exchange,提问作者HowDoesOneR
相关产品推荐
相关产品推荐

