W błyszczącym wątku próbuję zaznaczyć punkty pasujące do klikniętego punktu (na podstawie nearPoints() i kliknij).unikaj podwójnego odświeżania wykresu w błyszczącym
To rodzaj prac. Jednak reaktywne części błyszczącej aplikacji są odświeżane dwukrotnie, a druga iteracja wydaje się usuwać kliknięte informacje.
Jak mogę uniknąć drugiego odświeżenia aplikacji?
Oto 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)
Dziękuję bardzo. Działa jak urok - nawet w mojej "prawdziwej" aplikacji. – Andreas
Koleś. Ten problem blokuje mnie przez 3 dni! Dzięki za przesłane rozwiązanie. Nadal nie jestem w 100% pewna, dlaczego to działa (ktoś ma wyjaśnienie?) ... Ale tak. +1 –