Plotly:带有自定义起始/结束日期的 x 轴(日期)范围滑块

5

是否有选项在 plotly 包中使用 rangeslider 选项,以便您添加滑块并指定默认范围。目前,以下代码添加了滑块,但默认情况下选择了整个日期范围。

library(plotly)

df <- data.frame(Date = seq(as.Date("2016-01-01"), as.Date("2016-08-31"), by="days"),
                 Value = sample(100:200, size = 244, replace = T))

p <- plot_ly(data = df, x = Date, y = Value, type = "line") %>%
  layout(xaxis = list(rangeslider = list(type = "date")  ))
p

我希望能指定初始范围-例如,仅显示最近一个月,并允许用户根据需要扩展范围。文档似乎暗示没有此选项,我不想采用自定义JavaScript的方法。
有任何想法吗?
1个回答

9

我找到了答案,原来在文档中有说明,不知道为什么我之前错过了。日期需要转换为自纪元以来的毫秒数 - 下面的方法有点粗糙,可以尝试编写一个简单的函数使代码更易读:

p <- plot_ly(data = df, x = Date, y = Value, type = "line") %>%
  layout(xaxis = list(range = c( as.numeric(max(df$Date)-30) *86400000,
                                 as.numeric(max(df$Date)) * 86400000   ),
  rangeslider = list(type = "date")  ))
p

谢谢,将范围设置为x轴的一部分而不是范围滑块对我很关键。 - ronomal
你也可以使用字符串代替毫秒数(例如 format(max(df$Date)- lubridate::days(30), "%Y-%m-%d") 这样)。 - Sraffa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接