es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Usando flexdashboard en R: cómo obtener una salida con un solo clic, dos clics para otra salida y tres clics para otra salida en un gráfico ggplot.

Tengo que hacer que el botón “Action” me proporcione 3 salidas:

  • Todas las salidas serán puntos en el gráfico de ggplot.
  • Cuando haga clic una vez, el punto estará en el punto (30,58) en mi gráfico de ggplot.
  • Cuando haga clic dos veces, el punto estará en el punto (40,68) en mi gráfico de ggplot.
  • Cuando haga clic tres veces, el punto estará en el punto (50,78) en mi gráfico de ggplot.

A continuación se muestra mi código:


title: “Untitled”
output:
flexdashboard::flex_dashboard:
orientation: columns

vertical_layout: fill

“`{r setup, include=FALSE}
library(flexdashboard)
library(shiny)
library(shinydashboard)

library(ggplot2)
library(mgcv)

dataset <- diamonds

<pre><code><br />Columna {data-width=150}
———————————————————————–

### Gráfico A

“`{r}
actionButton(“action”, “Acción”)

Columna {data-width=350}

Gráfico B

“`{r}

ggplot() +
geom_point(data = tibble(x = c(30,40,50),y = c(58,68,78)), aes(x =x, y = y))

<pre><code><br />### Gráfico C

“`{r}
reactive({
input$action
})

Como puedes ver, soy principiante. Solo necesito entender cómo vincular la idea de n-clics y n-salidas en flexdashboard / shiny.

¿Alguna ayuda?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para lograr la funcionalidad deseada, puedes utilizar la función observeEvent() para monitorear el número de veces que se hace clic en el botón de acción y actualizar los datos para el ggplot en consecuencia. Aquí está el código modificado:

    “`{r}

    title: “Sin título”
    output:
    flexdashboard::flex_dashboard:
    orientation: columns

    vertical_layout: fill

    “`{r setup, include=FALSE}
    library(flexdashboard)
    library(shiny)
    library(shinydashboard)

    library(ggplot2)
    library(mgcv)

    dataset <- diamonds


    Columna {data-width=150} ----------------------------------------------------------------------- ### Gráfico A ```{r} actionButton("action", "Acción")

    Columna {data-width=350}

    Gráfico B

    “`{r}
    plotdata <- tibble(x = c(30,40,50), y = c(58,68,78))
    output$chart <- renderPlot({
    ggplot(plotdata) +
    geom_point(aes(x = x, y = y))
    })

    observeEvent(input$action, {
    clickCount <- input$action
    if(clickCount <= nrow(plotdata)) {
    newData <- plotdata[1:clickCount, ]
    } else {
    newData <- plotdata
    }
    output$chart <- renderPlot({
    ggplot(newData) +
    geom_point(aes(x = x, y = y))
    })
    })


    ### Gráfico C ```{r} plotOutput("chart")

    En este código, creamos un output llamado chart que se renderizará con los datos de plotdata. Luego utilizamos observeEvent() para monitorear el valor de input$action (es decir, el número de veces que se hace clic en el botón). Si el valor es menor o igual al número de filas en plotdata, seleccionamos un subconjunto de plotdata que incluya solo las primeras clickCount filas. De lo contrario, utilizamos el conjunto completo de plotdata. Luego renderizamos el ggplot modificado con los nuevos datos.

    Finalmente, incluimos un plotOutput() que muestra el chart. Esto mostrará el gráfico actualizado cada vez que se hace clic en el botón.

Comments are closed.