我正在尝试为我的stat类做一些演示。除其他事项外,我想展示所涉及的一步一步的过程。有关我正在寻找的简化示例,请考虑以下小玩具R功能:
toyPlot <- function() {
x <- 1:100/100
y <- x+rnorm(100,0,0.2)
plot(x,y)
Sys.sleep(2)
abline(lm(y~x))
Sys.sleep(2)
title(main="Fitted Line Plot")
}
它绘制一个散点图,等待两秒钟,添加LSR行,等待两秒钟,然后添加标题。
现在,当我做同样的闪亮时,它会等待整整4秒钟,然后立刻完成图表。
我花了一些时间寻找解决方案并找到了许多看起来很有用的命令(session $ onFlushed,invalidateLater,reactiveTimer)但我无法让他们中的任何一个做我想做的事。
答案 0 :(得分:4)
为什么不将绘图输出绑定到动画滑块的值?您可以使用animationOptions
来控制每个阶段的持续时间。
ui <- fixedPage(
plotOutput('myplot'),
sliderInput('myslider', 'Steps', min=1, max=3, value=1, animate=animationOptions())
)
server <- function(input, output, session) {
x <- 1:100/100
y <- x + rnorm(100, 0, 0.2)
pfs <- list(
function() plot(x, y) ,
function() abline(lm(y~x)),
function() title(main='Fitted line plot')
)
output$myplot <- renderPlot({
for (i in 1:input$myslider) pfs[[i]]()
})
}
runApp(list(ui=ui, server=server))
答案 1 :(得分:0)
这是一种方法,假设打开和关闭元素是可以接受的。在ui.r
中,你应该添加一个控件(现在只有chekcboxInput
会这样做)来打开和关闭元素。代码是
checkboxInput(inputId="lineCheck", label = "Show line?", value =FALSE),
checkboxInput(inputId="titleCheck", label = "Show title?", value =FALSE),
你的情节输出是:
toyPlot <- renderPlot({
x <- 1:100/100
y <- x+rnorm(100,0,0.2)
plot(x,y)
if(input$lineCheck){ abline(lm(y~x))}
if(input$titleCheck){ title(main="Fitted Line Plot")}
}
您可以为轴的范围,颜色选择的下拉列表,符号等添加滑块等。