2016-03-01 81 views
0

我有一個時間系列我正在繪製R使用ggplotly來自動轉換我的ggplot2圖形。我的時間序列可追溯到20年前,但當它出現時,我只希望它顯示最近4年的數據。我用設置默認縮放

layout(ggplotly_object, xaxis=list(range=c(min_date,max_date))) 

這似乎並不甚至工作到限制日期範圍,這我使用lubridate減去從最大日期4年設置。

我還沒有找到任何有關將plotly plot的默認縮放更改爲有限數據範圍的文檔,同時仍然允許用戶縮小和平移過去的數據。任何提示將不勝感激

+0

只是你想要的範圍的子集的數據集 – MLavoie

回答

0

因此,對於範圍,你應該將其設置爲向量長度2,即:c(min value,max value)

+0

正確的「 - 」是一個錯字,我的壞。問題仍然存在 – arkansasred

+0

所以如果你使用日期,你可能需要格式化它。 https://plot.ly/r/reference/#layout-xaxis-range –

0

日期軸以毫秒爲單位進行測量,因此您需要首先轉換爲本機。這裏有一個例子:

library(plotly) 
library(lubridate) 

set.seed(42) 

# Dummy data 
t1 <- ymd_hms("2006-03-14 12:00:00") 
t2 <- ymd_hms("2016-03-14 12:00:00") 
df <- data.frame(t = seq(t1, t2, by = 'week'), 
        y = rexp(522, rate = 0.25)) 

# Full plot 
p <- plot_ly(df, x = t, y = y, type = 'scatter') 
p 

# Now zoom. Needs to be the number of milliseconds since 01/01/1970. 
# I'm deliberately using lubridate functions. 
min_Date <- ymd_hms("2010-03-14 12:00:00") 
min_Date_ms <- interval("1970-01-01 00:00:00", min_Date)/dmilliseconds(1) 
max_Date <- ymd_hms("2012-03-14 12:00:00") 
max_Date_ms <- interval("1970-01-01 00:00:00", max_Date)/dmilliseconds(1) 

p %>% layout(xaxis = list(range = c(min_Date_ms, max_Date_ms))) 

有可能是一個更優雅的方式做到這一點,但它應該工作。