R 使用bind#u shinny()渲染的ggvis绘图是';t反应性
我想我缺少了ggvis+的一些基本方面 在教程之后,在server.R中使用一系列%>%管道构造绘图,以bind_shinny结尾,它将绘图与可在ui.R中引用的标识符相关联 我不明白的是,绘图本身并不像renderTable()、renderText()或reactive()中的代码那样是被动的。因此,如果我想在定义绘图时引用输入参数,如input$x,它将不起作用,我将得到一个错误,即R 使用bind#u shinny()渲染的ggvis绘图是';t反应性,r,shiny,reactive-programming,ggvis,R,Shiny,Reactive Programming,Ggvis,我想我缺少了ggvis+的一些基本方面 在教程之后,在server.R中使用一系列%>%管道构造绘图,以bind_shinny结尾,它将绘图与可在ui.R中引用的标识符相关联 我不明白的是,绘图本身并不像renderTable()、renderText()或reactive()中的代码那样是被动的。因此,如果我想在定义绘图时引用输入参数,如input$x,它将不起作用,我将得到一个错误,即“在没有活动-反应上下文的情况下,不允许操作。(您尝试执行的操作只能从反应表达式或观察者内部执行)。” 例如
“在没有活动-反应上下文的情况下,不允许操作。(您尝试执行的操作只能从反应表达式或观察者内部执行)。”
例如,如果'input'是shinyServer函数的输入参数,我可能会有一个如下图:
dataframe %>% ggvis(~ aval, ~ bval) %>% layer_points %>% layer_paths(x = ~xv, y = ~ yv, data = data.frame(xv = c(0, 0), yv = c(0, input$maxValParam)))
其中,layeR_points用于在dataframe中绘制数据,layeR_Path用于绘制一条垂直线,直到maxValParam值。因此可能有用
看起来,为了在ggvis()函数中引用您的输入$maxValParam
,整个ggvis函数需要包装在一个反应式函数中。
明目张胆地抄袭上述答案,你的答案可能看起来像:
reactive({
dataframe %>%
ggvis() #rest of plotting code %>%
add_axis("x", title = input$maxValParam)
}) %>% bind_shiny("plot")
你知道为什么ggvis是使用bind_shinny()函数实现的,而shinny reactive plot有自己的renderXXX()函数吗?这是可行的,但它有点令人困惑,它不一致。我不知道。。。我认为这与ggvis作为一个独立的交互有关,所以它可能需要不同的方法。Ggvis文档可能有线索。或者问问哈德利。