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.

¿Cómo escribir texto dentro de una gráfica utilizando la función shiny::HTML()?

Estoy tratando de escribir texto dentro de una función plot en R con una función shiny::HTML.

Pero no pude hacerlo dentro de la función graphics::text:

Mi shinyApp:

library(shiny)
library(shinydashboard)

header <- dashboardHeader(title = "Dashboard", titleWidth = 300)

sidebar <- dashboardSidebar(width = 300, 

                        sidebarMenu(id = "tabs",

                                    menuItem(text = "Plot", tabName = "plot", icon = icon("chart-pie")) 

                        )
)

body <- dashboardBody(

  tabItem(tabName = "plot",

      fluidPage(

        column(width = 12, 

               box(plotOutput(outputId = "plot1", click = "plot_click"), width = 6, title = 
                     "Gráfico 1")

        ) 
      )
  )

)

ui <- dashboardPage(header, sidebar, body, skin = "blue")

server <- function(input, output) {

  output$plot1 <- renderPlot({

    plot(x = .5, y = .5)

    graphics::text(
      x = .5, y = .5, cex = 1.8,

      HTML("<p>Primera línea;<br>
      Segunda línea;<br>
      Tercera línea.</p>")

    )

  })

}

shinyApp(ui, server)

Pero:

enter image description here

La función no funciona (las etiquetas HTML no son reconocidas).

¿Cómo solucionarlo?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para incluir texto HTML en una gráfica creada en R con la función shiny::plotOutput, necesitas usar la función shiny::HTML dentro del argumento gpcall de la función plotOutput. Aquí tienes un ejemplo:

    “`{r}
    output$plot1 <- renderPlot({

    plot(x = .5, y = .5)

    grid::grid.text(
    label = HTML(“

    Primera línea;
    Segunda línea;
    Tercera línea.

    “),
    x = .5, y = .5, gp = grid::gpar(cex = 1.8)
    )

    })

    En la parte de UI:

    plotOutput(outputId = “plot1”, click = “plot_click”, gpcall = list(grid::rect()))
    “`

    Ten en cuenta que en lugar de usar la función graphics::text, usamos la función grid::grid.text para añadir texto a la gráfica. El sistema gráfico grid es más flexible y facilita la inclusión de texto HTML en las gráficas.

    Además, en la función plotOutput, usamos el argumento gpcall para añadir un rectángulo a la gráfica. Esto es necesario al utilizar el sistema gráfico grid con shiny::plotOutput.

Comments are closed.