Линейный график не отображается с графиком в R - PullRequest
0 голосов
/ 12 сентября 2018

Моя конечная цель - создать 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 obs, 4 переменных (даты, факты, соответствия, индекс).

Когда нажата кнопка «Воспроизвести» для анимации и когда кадры анимации продолжаются, при наведении курсора на область графика на мгновение отображаются подсказки точек данных, однако график не отображается.

Заранее благодарю за помощь, надеюсь, я предоставил вам достаточно информации.

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

В xaxis и в yaxis showline = TRUE

0 голосов
/ 12 сентября 2018

Я по ошибке взял часть скрипта по приведенной ниже ссылке для анимированного черчения (https://plot.ly/r/cumulative-animations/). Проблема в том, что я не изменил переменную, которую нужно подставить (переменная, которую нужно использовать)в параметре frame функции plot_ly) перед его использованием.

Поэтому, чтобы график работал должным образом, я должен: 1. определить функцию accumulate_by, 2. использовать ее спеременная be-frame в качестве входных данных, 3. выходной столбец, созданный на шаге 2, будет значением параметра frame функции 'plot_ly'.

Начальный кадр рабочих данных 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"
            )
...