In una trama lucida sto cercando di evidenziare i punti corrispondenti a un punto cliccato (basato su nearPoints() e clic).evitare doppio aggiornamento della trama in lucido
Questo tipo di lavori. Tuttavia, le parti reattive dell'app lucida vengono aggiornate due volte e la seconda iterazione sembra cancellare le informazioni su cui si fa clic.
Come posso evitare il secondo aggiornamento dell'app?
Ecco la MWE: (!)
library("Cairo")
library("ggplot2")
library("shiny")
ui <- fluidPage(
fluidRow(
titlePanel('Phenotype Plots')
),
fluidRow(
uiOutput("plotui")
),
hr(),
fluidRow(
wellPanel(
h4("Selected"),
tableOutput("info_clicked")
##dataTableOutput("info_clicked") ## overkill here
)
)
)
server <- function(input, output, session) {
selected_line <- reactive({
nearPoints(mtcars, input$plot_click,
maxpoints = 1,
addDist = TRUE)
})
output$plotui <- renderUI({
plotOutput("plot", height=600,
click = "plot_click"
)
})
output$plot <- renderPlot({
p <- ggplot(mtcars) +
facet_grid(am ~ cyl) +
theme_bw() +
geom_point(aes(x=wt, y=mpg))
sline <- selected_line()
if (nrow(sline) > 0) {
p <- p +
geom_point(aes(x=wt, y=mpg),
data=mtcars[mtcars$gear == sline$gear,],
colour="darkred",
size=1)
}
p
})
##output$info_clicked <- renderDataTable({
output$info_clicked <- renderTable({
res <- selected_line()
## datatable(res)
res
})
}
shinyApp(ui, server)
Grazie mille. Funziona come un fascino - anche nella mia "vera" applicazione. – Andreas
Amico. Questo problema mi ha bloccato per circa 3 giorni! Grazie per la soluzione pubblicata. Non sono ancora sicuro al 100% perché funzioni (qualcuno ha una spiegazione?) ... Ma lo fa. +1 –