2017-07-11 1 views
1

Ich habe ein Grundstück von Wellen hinzuzufügen, wo ich jeden Peak in der Kurve identifizieren müssen: enter image description hereglänzend: plot erscheinen neue Punkte

würde Ich mag folgendes tun:

Reaktiv hinzufügen Punkte die Handlung, wo ich klicke, um das Vorhandensein jedes Gipfels zu markieren.

ui.R 
plotOutput("plot1", click = "plot_click") 

server.R 
output$plot1 <- renderPlot({ 
    plot(x,y) 
    points(x=input$plot_click$x,y=input$plot_click$y) 
}) 

Das Problem hier ist, dass, obwohl das ‚plot_click‘ -Mechanismus die x- und y-Position des Punkte- identifiziert die ‚Punkte()‘ Befehl Punkte nur bewirkt vorübergehend erscheinen und verschwinden dann.

Ich habe auch versucht reactivePlot aber den Fehler zurückgegeben:

could not find function "func" 

Antwort

0

es sortiert. Basierend auf der Hilfe eines früheren Beitrags: avoid double refresh of plot in shiny

library(shiny) 
ui <- basicPage(
    actionButton("submit","submit"), 
    plotOutput("plot1", click = "plot_click"), 
    verbatimTextOutput("info"), 
    tableOutput('table') 
) 

server <- function(input, output) { 
    click_saved <- reactiveValues(singleclick = NULL) 
    observeEvent(eventExpr = input$plot_click, handlerExpr = { click_saved$singleclick <- input$plot_click }) 
    rv=reactiveValues(m=data.frame(x=0,y=0)) 
    output$plot1 <- renderPlot({ 
    plot(x,y, type='l') 
    points(rv$m$x[-1],rv$m$y[-1]) 
    }) 

    output$info <- renderText({ 
    paste0(unlist(click_saved$singleclick)) 
    }) 


    observeEvent(input$submit, { 
    if (input$submit > 0) { 
     rv$m <- rbind(rv$m,unlist(click_saved$singleclick)) 
    } 
    }) 

    output$table <- renderTable({ 
    if (is.null(rv$m)) {return()} 
    print(rv$m) 
    }, 'include.rownames' = FALSE 
    , 'include.colnames' = TRUE 
) 

} 

shinyApp(ui, server) 
Verwandte Themen