首页 文章

以图形方式设置默认放大

提问于
浏览
1

我有一个时间序列,我正在使用ggplotly绘制R来自动转换我的ggplot2图形 . 我的时间序列可以追溯到20年前,但是当它提出来时,我只希望它显示最近4年的数据 . 我用过

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

这似乎甚至不能限制日期范围,我使用lubridate设置从最大日期减去4年 .

我还没有找到任何关于将绘图的默认缩放更改为有限范围的数据的文档,同时仍然允许用户缩小并平移到过去的数据 . 任何提示将不胜感激

2 回答

  • 1

    日期轴以毫秒为单位,因此您需要先转换为此单位 . 这是一个例子:

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

    这可能是一种更优雅的方式,但它应该有效 .

  • 0

    因此对于范围,您应该将其设置为向量长度2,即: c(min value,max value) .

相关问题