我想在R中的Shiny App中绘制一个Plotly图 . 我想要这样的功能,我想在循环中绘制一定数量的点(比如20) .
这是我的Server.R代码: -
xAxis = vector("numeric", as.numeric(input$Generations))
yAxis = vector("numeric", as.numeric(input$Generations))
graphDF = data.frame(cbind(xAxis, yAxis))
for(i in 1 : 5)
{ output$GA = renderPlotly({
print(graphDF) # Testing
graphDF$yAxis[i] = i
graphDF$xAxis[i] = i
print(graphDF) # Testing
# Plotly functionality
p <- plot_ly(graphDF, x = graphDF$xAxis, y = graphDF$yAxis)
})
}
非常感激任何的帮助 .
亲切的问候
1 回答
这比它看起来更复杂 . 看起来你想要迭代并创建一系列图形图形,随着时间的推移改变数据值 .
因为
Generations
滑块将向量重新初始化为新长度,并且每次迭代都会更改所绘制数据的状态,所以不能只是级联反应函数 . 将状态存储在reactiveValues
中是处理此问题的好方法 .主要变化如下:
添加
reactiveValues
以存储xAxis
和yAxis
添加
observeEvent
以在值更改时重新初始化这些值添加了一个"Iteration range"滑块来驱动迭代(比反应计时器更容易) . 请注意,它有一个
animate
参数(可能)自己创建一个反应计时器 .修改了情节调用,使其更传统,避免警告 .
代码:
因为它是动态的,你必须运行它才能看到它是如何工作的,但这是几次迭代后的屏幕截图: