web-dev-qa-db-fra.com

Changer la couleur et la police du texte dans Shiny App

J'utilise le code ci-dessous dans server.R pour afficher le texte dans le panneau principal. Cela fonctionne exactement comme il devrait fonctionner.

output$text1 <- renderText({
  if(input$ag == 0) return(NULL)
  return('First 20 rows for requested AG')
})

Existe-t-il un moyen de modifier la police et la couleur du texte?

29
Piyush

Vous pouvez utiliser css comme @jbaums l'a indiqué

library(shiny)
runApp(list(
  ui = bootstrapPage(
    numericInput('n', 'Number of obs', 100),
    textOutput('text1'),
    tags$head(tags$style("#text1{color: red;
                                 font-size: 20px;
                                 font-style: italic;
                                 }"
                         )
              )
  ),
  server = function(input, output) {
    output$text1 <- renderText({ paste("hello input is",input$n) })
  }
))

Normalement, vous devez l'inclure dans un styles.css fichier mais il est montré ici en ligne pour être autonome. #text1 fait référence à l'élément DOM avec id=text1 et le contenu des accolades sont les styles appropriés.

36
jdharrison

Si vous voulez seulement changer une certaine partie de la chaîne de retour, vous pouvez utiliser htmlOutput au lieu de textOutput

Côté serveur, revenez

output$text1 <- renderText({ paste("hello input is","<font color=\"#FF0000\"><b>", input$n, "</b></font>") })

De cette façon, Shiny UI exécutera le HTML.

29
athlonshi

dans ui.r:

span(textOutput("message"), style="color:red")

dans server.r:

output$message <- renderText({"This is some red text"})
18
MikeP

La solution de @MikeP fonctionne également avec p(), fx p("some text", style = "color:red), vous pouvez donc simplement envelopper cela dans une renderText() du serveur si vous souhaitez l'afficher dynamiquement.

6