2016-08-12 103 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")) 
相關問題