Ich möchte ein glänzendes Diagramm in einem Rmarkdown-Dokument erstellen, in dem die Farbe der Punkte vom Mauszeiger abhängt (Hover). Der gewünschte Plot erscheint jedoch nur einen Bruchteil einer Sekunde, bis das Hover-Element der Eingabeliste erneut auf NULL
gesetzt wird. Warum ist das?Punktfarben basierend auf Hover in R shiny und Rmarkdown
Beispiel:
---
title: "Untitled"
runtime: shiny
output: html_document
---
```{r,echo=FALSE}
library(ggplot2)
x <- rnorm(100)
y <- rnorm(100)
dfr <- data.frame(x, y)
give_col <- function(){
if(is.null(input$hover$y)){
rep(2, length(x))
}else{
(input$hover$y < dfr$y) + 1
}}
imageOutput("image_id", hover = "hover")
textOutput("text_id")
output$image_id <- renderPlot({
plot(dfr$x, dfr$y, col = factor(give_col()))
# plot(dfr$x, dfr$y) # Without col the give_col() element remains
# as can be seen in the output text
})
output$text_id <- reactive({paste(give_col())})
```
Wenn Sie die Farbe Teil der Handlung entfernen, die Textausgabe wie erwartet verhält, also denke ich, es etwas mit dem Plotten selbst (gleich für pch
statt col
oder sein muß ggplot()
anstelle von plot()
).
Jede Hilfe wäre willkommen.
Danke für die schnelle, kurze und auf den Punkt gebracht Antwort! – user1965813
Warum löst die Neuzeichnung, die 'input $ hover' ändert, nicht auch das' observeEvent' aus? (Das würde bedeuten, dass 'observeEvent' anders funktioniert als einfache Invalidierungen, oder?) Antwort kann [hier] gefunden werden (https://shiny.rstudio.com/reference/shiny/latest/observeEvent.html) – user1965813