闪亮的交互式绘图无法在服务器中找到单击输入

时间:2017-04-13 14:38:02

标签: r shiny click coordinates igraph

我正试图制作一个有光泽的互动情节。当我点击原始图表时,我想显示有关我在单独的fluidRow(另一个表格/图表)中单击的点的信息。我在网上流了一些例子来设置我的UI,其中点击输入变量被调用" plot_click"。但是,我在服务器中找不到这个输入(当我在服务器中键入input $时,输入变量列表没有plot_click)。代码如下所示:

shinyUI(fluidPage(


  # Application title
  titlePanel("Test Project"),

  sidebarLayout(
    sidebarPanel(
      selectInput("variable", "variable:", var_list),
      selectInput("analysis_function", "Function", analy_fun_list)      ),

    mainPanel(
      fluidRow(
        column(width = 4,
               plotOutput("plot", height=350, click = clickOpts(id="plot_click")  )    
               )
      ),
      fluidRow(
        column(width = 6,
               verbatimTextOutput("click_info"))
      )

    )
  )

))

调用点击输入的服务器代码如下:

output$click_info <- renderPrint({
  nearPoints(unlist(graph_react()[4]), input$plot_click, addDist=TRUE)
})

要突出显示,变量&#34;输入$ plot_click&#34;在最后一行找不到。

1 个答案:

答案 0 :(得分:1)

好吧,我编写了一个小例子,希望靠近你,它会告诉你它是如何工作的。

  • 创建了一些变量(x,y,z)和一些分析函数(sin,cos,exp),并用它们生成数据网格
  • 根据您在ui函数中选择的输入变量,从中制作一个绘图。
    • 然后回复了该剧情中的点击信息

这是代码:

library(shiny)
library(ggplot2)

var_list <- c("x","y","z")
analy_fun <- c("sin","cos","exp")

u <- shinyUI(fluidPage(
  titlePanel("Test ClickInfo"),
  sidebarLayout(
    sidebarPanel(
      selectInput("variable", "variable:", var_list),
      selectInput("analy_fun", "Analytic Function:", analy_fun)),
    mainPanel(
      fluidRow(
        column(width = 4,plotOutput("plot", height=350, click=clickOpts(id="plot_click"))
      ),
      fluidRow(
        column(width = 6, verbatimTextOutput("click_info"))
))))))
s <- function(input, output) {
  gendata <- reactive({
    df <- expand.grid(x=-4:4,y=-4:4,z=-4:4)
    df$sin <- sin(df$x+df$y+df$z)
    df$cos <- cos(df$x+df$y+df$z)
    df$exp <- exp(df$x+df$y+df$z)
    df
  })
  output$plot <- renderPlot({
    ggplot(gendata()) + geom_point(aes_string(x=input$variable,y=input$analy_fun))
  })

  output$click_info <- renderText({
    sprintf(" %s = %.2f \n %s = %.2f ",input$variable,  input$plot_click$x,
                                       input$analy_fun, input$plot_click$y )
  })
}
shinyApp(u, s)

以下是click_info生成的闪亮应用的屏幕截图:

enter image description here