我的最终目标是在同一图上创建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个变量(日期,实际值,拟合值,索引)的数据框。
当单击动画的“播放”按钮并继续播放动画帧时,将鼠标悬停在绘图区域上时,会暂时显示数据点的工具提示,但不会显示任何图形。
在此先感谢您的协助,希望我能为您提供足够的信息。
答案 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