Plotly R:无法使自定义 xaxis 日期范围起作用

Gop*_*ala 2 r plotly

这应该非常简单(我认为),但由于某种原因我无法让它工作。我有这样的数据:

df
           x y
1 2016-08-12 1
2 2016-08-13 2
3 2016-08-14 3
4 2016-08-15 4
5 2016-08-16 5

str(df)
'data.frame':   5 obs. of  2 variables:
 $ x: Date, format: "2016-08-12" "2016-08-13" ...
 $ y: int  1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)

我按如下方式使用绘图,但它不会将 xaxis 范围调整为我指定的自定义值。相反,使用数据的范围:

library(plotly)
plot_ly(df, x = x, y = y) %>% layout(xaxis = list(range = c(as.Date('2016-08-01'), as.Date('2016-08-31'))))
Run Code Online (Sandbox Code Playgroud)

另一方面,如果我有这样的数字数据:

df
  x y
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
Run Code Online (Sandbox Code Playgroud)

并指定一个像这样的自定义范围,它工作得很好:

plot_ly(df, x = x, y = y) %>% layout(xaxis = list(range = c(-5, 10)))
Run Code Online (Sandbox Code Playgroud)

在使数据范围发挥作用时我缺少什么?

Jot*_*ota 5

引用自https://plot.ly/r/reference/#layout-xaxis-range(粗体是我添加的):

range(列表) 设置该轴的范围。如果轴type是“log”,那么您必须取所需范围的对数(例如,要将范围设置为1 到100,请将范围设置为0 到2)。如果轴 type是“日期”,则必须将日期转换为以毫秒为单位的unix时间(自1970年1月1日以来的毫秒数)。例如,要设置从 1970 年 1 月 1 日到 2013 年 11 月 4 日的日期范围,请将范围设置为 0 到 1380844800000.0 每个命名列表都具有下面列出的一个或多个键。

因此,您可以将日期转换为以毫秒为单位的 Unix 时间:

plot_ly(df, x = x, y = y) %>%
    layout(xaxis = list(
        range = 
            c(as.numeric(as.POSIXct("2016-08-01", format="%Y-%m-%d"))*1000,
              as.numeric(as.POSIXct("2016-08-31", format="%Y-%m-%d"))*1000),
        type = "date"))
Run Code Online (Sandbox Code Playgroud)