折线图未在R中以绘图方式显示

时间:2018-09-12 10:43:18

标签: r plotly r-plotly timeserieschart

我的最终目标是在同一图上创建2个时间序列折线图,一个是静态的,另一个是动画的(前者是指实际数据,后者是指我模型的拟合值)。我正在努力实现这一目标,但是我是一个全新的人,遇到了困难。

为了在尝试上述操作之前先熟悉绘图,我最初尝试在绘图上仅创建一个动画图。但是,我什至无法使表面上简单的脚本起作用。当运行以下内容时,我的绘图区域上没有显示任何图形,就像没有数据一样。我的脚本是根据以下链接创建的:https://plot.ly/r/cumulative-animations/

plot_ly(data
        , x=~data$RequCreatedFull_Date
        , y=~data$fitted_TotalRequ_Qnt_pm
        , name="Fitted"
        , type='scatter'
        , mode = "lines"
        , line = list(color = "rgb(255,128,0)")
        , frame = ~data$RequCreatedFull_Date
        , line = list(simplyfy = F)) %>%
layout(title="name"
       , xaxis = list(range = 
                           c(as.numeric(min(data$RequCreatedFull_Date))*1000                              
                           ,as.numeric(max(data$RequCreatedFull_Date))*1000)
                      , type = "date"
                      , title = "Requisition Date"
                      , zeroline = F)
       , yaxis = list(title="Total Requisition Qnts"
                      , range = c(1000,30000)
                      , zeroline = F)) %>%
  animation_opts(frame = 100,
                 transition = 0,
                 redraw=FALSE) %>%
  animation_button(x = 1, xanchor = "right", y = 0, yanchor = "bottom")

data是一个53磅,4个变量(日期,实际值,拟合值,索引)的数据框。

当单击动画的“播放”按钮并继续播放动画帧时,将鼠标悬停在绘图区域上时,会暂时显示数据点的工具提示,但不会显示任何图形。

在此先感谢您的协助,希望我能为您提供足够的信息。

2 个答案:

答案 0 :(得分:1)

我错误地将脚本的 part 用作动画绘图(https://plot.ly/r/cumulative-animations/)的以下链接。问题是我在使用前没有修改要构架的变量(该变量在frame函数的plot_ly参数中使用)。

因此,为了使绘图正常工作,我应该:1.定义accumulate_by函数,2.将其与待构架变量一起用作输入,3.将步骤2中产生的输出列将是'plot_ly'函数的frame参数的值。

初始工作数据帧为data2,其列为RequCreatedFull-Date(as POSIXct), Requs_Qnt_pm(as num), Type(as Factor), date(as num),其中
 date=(year(RequCreatedFull_Date)+(month(RequCreatedFull_Date)-1)/12)

请参考以下工作脚本:

library(plotly)
library(dplyr)
library(lubridate)

#step 1: function definition
accumulate_by <- function(dat, var) {
  var <- lazyeval::f_eval(var, dat)
  lvls <- plotly:::getLevels(var)
  dats <- lapply(seq_along(lvls), function(x) {
   cbind(dat[var %in% lvls[seq(1, x)], ], frame = lvls[[x]])
  })
  dplyr::bind_rows(dats)
}

#step 2: creation of to-be-used for framing variable
data2mod <- data2 %>%
  accumulate_by(~date)


#graph creation
my_graph<-data2mod %>%
             plot_ly(
               x = ~date, 
               y = ~Requs_Qnt_pm,
               split = ~Type,
               frame = ~frame, #step 3, to be frame variable insertion
               type = 'scatter',
               mode = 'lines', 
               line = list(simplyfy = F)
            ) %>% 
             layout(
                xaxis = list(
                  title = "x axis title",
                  zeroline = F
               ),
                yaxis = list(
                  title = "y axis title",
                  zeroline = F
               )
            ) %>% 
            animation_opts(
              frame = 100, 
              transition = 0, 
              redraw = FALSE
            ) %>%
            animation_slider(
              hide = T
            ) %>%
            animation_button(
               x = 1, xanchor = "right", y = 0, yanchor = "bottom"
            )

答案 1 :(得分:0)

在xaxis和yaxis中showline = TRUE