我使用this approach在Shiny中制作了动画 我发现的问题是从绘图到绘图的过渡有点卡住(绘图区域在处理下一个绘图时淡出)。
我想保留先前的情节直到下一个准备就绪。 有没有办法从一个renderPlot转换到下一个renderPlot,避免对前一个绘图的淡出效果?
下面我列出了一个最小的工作示例。如果您的计算机没有卡住,只需增加K,它最终会。
library(shiny)
library(ggplot2)
k<-50000L
data=data.frame(x=runif(k),y=runif(k))
runApp(list(
ui =fluidPage(
tags$head(tags$style(".rightAlign{float:right;}")),
headerPanel("Cost Explorer"),
sidebarPanel(
actionButton("goButton", "Go!"),
actionButton("reset", "Reset") ),
mainPanel(fluidRow(column(8,
plotOutput(outputId="tsplot"),class = 'rightAlign')))),
server=function(input, output, session) {
datareactive<-reactiveValues(data=data)
t <- reactiveValues(counter=1)
observe({
isolate({
t$counter=t$counter+1;
datareactive$data<-data.frame(x=runif(k),y=runif(k))
})
if ((input$goButton > 0)){
invalidateLater(200, session)
}
})
output$tsplot <- renderPlot({
ggplot(datareactive$data,aes(x,y))+geom_point()+coord_fixed()+
theme_bw()+
geom_path(data=datareactive$data[(k-10):k,],aes(x,y),size=1.1,
colour="blue")+
geom_point(data=datareactive$data[k,],aes(x,y),
colour="red")
})
}
))