我试图用plotly
强调如何绘制累积线动画。下面是“ Plotly R开源图形库”中的代码:
library(plotly)
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)
}
df <- txhousing
fig <- df %>%
filter(year > 2005, city %in% c("Abilene", "Bay Area"))
fig <- fig %>% accumulate_by(~date)
~date
至accumulate_by
功能。哪些值dat
和var
变量会得到什么?以及它如何工作?var
和dat
变量取什么值,就很清楚f_eval
函数的作用,但是现在我不明白。plotly:::getLevels
是什么?我的意思是,我没有找到有关此功能的任何文档。主要问题是解释我们通过〜date后会发生什么情况到accumulate_by函数。哪些值dat和var变量会得到吗?以及它是如何工作的?
accumulate_by
将采用传递给它的dat
和var
的任何值。这意味着如果您通过accumulate_by(Var1, Var2)
,则与accumulate_by(dat = Var1, var = Var2)
相同。这称为位置匹配。
由于代码被写入,因此fig
是您的dat
变量,因为它是通过管道(accumulate_by
)在第一个位置进入%>%
的。 ~date
是您的var
变量,因为它位于第二位置。
日期前面的~
表示“按”,因此“按日期”
如果我了解var和dat变量取什么值,清楚f_eval函数的作用,但现在我不知道明白这一点。
我希望回答问题1。
什么是密谋::: getLevels?我的意思是,我没有找到任何文档关于此功能。
三冒号表示“搜索整个程序包(在这种情况下,程序包为plotly
),包括程序包名称空间中未导出的项目”。实际上,这意味着很多软件包都具有“帮助程序”功能和其他最终用户通常不使用的实用程序。而是这些辅助功能被包中的其他功能使用。辅助函数不会“导出”,也就是说,通常只需输入其名称即可使用。但是,可以通过使用:::
三元冒号来访问它们。