我想我错过了ggvis + shiny的一些基本方面。
在教程之后,使用一系列%>%管道在server.R中构建绘图,以bind_shiny结尾,该绘图将绘图与可在ui.R中引用的标识符相关联。
我不知道的是,绘图本身并不像renderTable(),renderText()或reactive()中的代码那样具有反应性。因此,如果我想在定义绘图时引用输入参数(如输入$ x),它将无效,我将收到错误"Operation not allowed without an active reactive context. (You tried to do something that can only be done from inside a reactive expression or observer.)"
。
例如,如果'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用于绘制数据框中的数据,而layer_paths用于绘制垂直线,直到maxValParam值。
答案 0 :(得分:6)
所以this answer可能会有用。
看起来为了在ggvis()函数中引用你的input$maxValParam
,整个ggvis函数需要被包含在被动中。
公然撕掉上面的答案,你的看起来像是:
reactive({
dataframe %>%
ggvis() #rest of plotting code %>%
add_axis("x", title = input$maxValParam)
}) %>% bind_shiny("plot")