Ho un'app shiny
e desidero un ggplot
con un brush
all'inizio, quindi l'utente non deve selezionare alcuna area di interesse ogni volta che l'app viene avviata. Successivamente, l'utente può selezionare un'area diversa. Ecco un esempio per iniziare:È possibile inizializzare il pennello in ggplot in un'app lucida?
library(shiny)
library(ggplot2)
runApp(shinyApp(
ui = fluidPage(plotOutput('plotA', brush = brushOpts(id = 'plotA_brush')),
plotOutput('plotZ')),
server = function(input, output, session) {
pollData <- reactivePoll(60 * 1000, session,
checkFunc = function(){ Sys.time() },
valueFunc = function(){ data.frame(x = 1:100, y = cumsum(rnorm(100)))})
output$plotA <- renderPlot({
dt <- pollData()
ggplot(dt, aes(x, y)) + geom_line()
})
ranges <- reactiveValues(x = NULL, y = NULL)
observe({
brush <- input$plotA_brush
if(!is.null(brush)) {
ranges$x <- c(brush$xmin, brush$xmax)
ranges$y <- c(brush$ymin, brush$ymax)
} else {
ranges$x <- NULL
ranges$y <- NULL
}
})
output$plotZ <- renderPlot({
dt <- pollData()
ggplot(dt, aes(x, y)) + geom_line() + coord_cartesian(xlim = ranges$x, ylim = ranges$y)
})
}
))
inizializzarlo a ciò però? Inizia "inizializzato" per l'intera area. Sospetto che tu voglia inizializzarlo su una porzione particolare, ma quale parte? Qualcos'altro che è più piccolo del tutto? –
Sì, qualsiasi altra cosa è più piccola dell'intera cosa. In questo esempio, diciamo che voglio che 'x' sia nell'intervallo da 25 a 75 e' y' dal minimo al massimo. –