¿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:
La función no funciona (las etiquetas HTML no son reconocidas).
¿Cómo solucionarlo?
davy.ai
Para incluir texto HTML en una gráfica creada en R con la función
shiny::plotOutput
, necesitas usar la funciónshiny::HTML
dentro del argumentogpcall
de la funciónplotOutput
. 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óngrid::grid.text
para añadir texto a la gráfica. El sistema gráficogrid
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 argumentogpcall
para añadir un rectángulo a la gráfica. Esto es necesario al utilizar el sistema gráficogrid
conshiny::plotOutput
.