【发布时间】:2019-08-15 11:05:47
【问题描述】:
我想在我的应用程序中始终显示我的图表 (g)。我想将g 的“默认”值硬编码到应用程序中,并且用户可以通过 UI 更新g。我正在使用 {{igraph}} 库及其函数,例如 make_empty_graph 和 add_vertices。
我相信我此时的主要问题是我对g 进行了硬编码,但是g 的反应版本实际上是g()。我确信这个问题之前已经解决过很多次了,但是我在 Shiny 演示中看不到一个例子。
这是我在 server() 里面的内容:
g <- make_empty_graph(directed = TRUE) %>%
add_vertices(nv = 1, depth = 0L, x = 0, y = 0, cur = TRUE)
g <- eventReactive(
eventExpr = 'investigate',
valueExpr = {
add_children(g = g, vidx = input$vidx)
}
)
output$the_plot <- renderPlot(
expr = {
plot_graph(g())
}
)
add_children() 和 plot_graph() 在全局命名空间中定义。如果有帮助,我很乐意分享更多代码(或整个应用程序)。
根据 SO 的输入,工作版本是:
g <- reactiveVal(
make_empty_graph(directed = TRUE) %>%
add_vertices(nv = 1, depth = 0L, x = 0, y = 0, cur = TRUE)
)
observeEvent(
eventExpr = input$investigate,
handlerExpr = g(add_children(g = g(), vidx = input$vidx)),
ignoreInit = TRUE
)
output$the_plot <- renderPlot(plot_graph(g()))
【问题讨论】:
-
g是一个图表。make_new_graph是来自 {{igraph}} 的函数。我将在上面澄清这一点。感谢您指出这一点。