2017-06-26 2 views
0

Plotly hat die Funktion event_data, die auf Klicks auf Punkte eines Plots reagiert. Sie müssen jedoch eine "Quelle" für event_data angeben, die das Diagramm angibt, das Sie ansehen möchten.R - ggplot: Erhalte die ID eines angeklickten Graphen

Ist diese Art von Funktion auch in ggplot verfügbar? Wenn nein, wie können wir dann die ID des angeklickten Plots finden?

Hinweis: Ich verweise Wordcloud als Graphen und diese Grafiken werden dynamisch generiert.

+0

Ja, es ist möglich. Schau [hier] (https://shiny.rstudio.com/gallery/plot-interaction-selecting-points.html) –

+0

Nein, das ist nicht was ich will. Bsp: Da gibt es 5 Plots und wenn ich auf irgendeinen von ihnen klicke, dann möchte ich die ID des angeklickten Graphen. – Lok

+0

Sie wollen also jede Handlung wie eine große, ausgefallene Taste behandeln? –

Antwort

1

hilft Hier ist ein minimales Beispiel, das überprüft die Plot wird angeklickt. Der reaktive Wert selected_plot wird aktualisiert, sobald ein Klick-Ereignis eintritt.

library(shiny) 

ui = fluidPage(
    verbatimTextOutput("text"), 
    plotOutput("plot1", click = "plot1_click"), 
    plotOutput("plot2", click = "plot2_click") 
) 

server = function(input, output, session){ 
    output$plot1 = renderPlot({ 
    hist(rnorm(1000)) 
    }) 
    output$plot2 = renderPlot({ 
    plot(cumsum(rnorm(1000))) 
    }) 

    selected_plot = reactiveVal() 
    observeEvent(input$plot1_click, {selected_plot(1)}) 
    observeEvent(input$plot2_click, {selected_plot(2)}) 

    output$text = renderPrint({ 
    cat("selected plot:", selected_plot()) 
    }) 
} 

shinyApp(ui, server) 

Beachten Sie, dass Sie auch die click Option auf der Server-Seite bei der Verwendung des outputArgs Argument von renderPlot angeben.

0

Sie können Ihre ggplot Graph zu einer plotly -Graph ggplotly(<yourplot>) Aufruf übersetzen, nachdem Sie es erstellt und verwenden Sie die event_data() Funktion:

library(plotly) 

set.seed(100) 
d <- diamonds[sample(nrow(diamonds), 1000), ]  
p <- ggplot(data = d, aes(x = carat, y = price)) + geom_point() 
ggplotly(p) 

enter image description here

+0

Eigentlich habe ich eine Wordcloud als Graph und will sie nicht in plotly konvertieren. – Lok

0

es ohne Beispiel schwer zu erklären ist. Wenn jedoch die Arbeit mit Shiny dank der Pakete ggiraph können Sie geom_point in geom_point_interactive ändern, und später so etwas wie folgt verwenden:

selected_dot <- reactive({ 
    input$plot_selected 
}) 

Hoffe, dass es ein wenig