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

时间:2016-08-12 13:38:30

标签: 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

我正在使用如下的plotly,但它不会将x轴范围调整为我指定的自定义值。相反,使用数据范围:

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

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

df
  x y
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5

并指定这样的自定义范围,它可以正常工作:

plot_ly(df, x = x, y = y) %>% layout(xaxis = list(range = c(-5, 10)))

在使数据范围有效时我缺少什么?

1 个答案:

答案 0 :(得分:2)

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

  

range(list)设置此轴的范围。如果轴type是   “log”,然后你必须记录你想要的范围(例如设置   范围从1到100,设置范围从0到2)。 如果是轴   type是“日期”,然后您必须将日期转换为unix时间   毫秒(自1970年1月1日以来的毫秒数)。对于   例如,设置1970年1月1日到11月4日的日期范围,   2013年,设置范围从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"))