在R中以程序方式将图层添加到绘图中



我试图以编程的方式在plotly中添加层,但似乎无法绕过它的懒惰评估。示例:

p <- plot_ly()
for(kk in 1:5) {
  tmp <- cbind(rnorm(1) + 0.05*rnorm(15),rnorm(1) + 0.05*rnorm(15))
  p %<>% add_trace(x = tmp[,1], y = tmp[,2], type = "scatter", mode = "markers")  
}

在这个例子中,我试图绘制一个高斯混合模型,然而,要绘制的参数在查看之前不会进行评估,所以所有五层都只包含tmp的最终值。plotly_build命令应该是强制求值,但我找不到它的用法示例,显然我做错了。

p <- plot_ly()
for(kk in 1:5) {
  tmp <- cbind(rnorm(1) + 0.05*rnorm(15),rnorm(1) + 0.05*rnorm(15))
  p %<>% add_trace(x = tmp[,1], y = tmp[,2], type = "scatter", mode = "markers")
  plotly_build(p)     
}

仍然给出了相同的结果。我做错了什么?

p <- plot_ly()
for(kk in 1:5) {
  tmp <- cbind(rnorm(1) + 0.05*rnorm(15),rnorm(1) + 0.05*rnorm(15))
  p %<>% add_trace(x = tmp[,1], y = tmp[,2], type = "scatter", mode = "markers", evaluate = TRUE)  
}

这里有一个计算论证。

最新更新