2016-08-12 89 views
0

这应该是非常简单的(我认为),但我无法得到这个工作出于某种原因。我有这样的数据:Plotly R:不能让自定义的xaxis日期范围工作

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 

我使用情节如下,但它不会调整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')))) 

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

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))) 

我在使数据范围工作时缺少什么?

回答

2

https://plot.ly/r/reference/#layout-xaxis-range(粗体由我添加)报价:

范围(名单)设置此轴的范围。如果轴type为 “log”,则必须记录所需范围的记录(例如,设置 范围从1到100,范围从0到2)。 如果轴 type是“date”,那么您必须将日期转换为 毫秒(自1970年1月1日以来的毫秒数)的unix时间。例如,要设置1970年1月1日至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"))