2014-06-04 8 views
22

Sto usando il codice sottostante in server.R per visualizzare il testo nel pannello principale. Funziona esattamente come dovrebbe funzionare.Cambiare il colore e il carattere del testo in Shiny App

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

C'è un modo per modificare il carattere e il colore del testo?

+0

AFAIK renderText restituisce solo il suo testo come cat. Probabilmente hai bisogno di usare i CSS per cambiare lo stile del testo. Vedi qui per una discussione su Google Gruppi che (penso) includa il tuo problema. – jbaums

+1

Ho appena realizzato che non ho fornito l'url:/[eccolo qui] (https://groups.google.com/forum/#!topic/shiny-discuss/xWyaOryOkVs) (ea seconda vista potrebbe non esserlo il contesto di 'renderText'). – jbaums

risposta

23

È possibile utilizzare i CSS come @jbaums indicato

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) }) 
    } 
)) 

Normalmente si dovrebbe includere questo in un file styles.css ma è mostrato in linea qui per essere autosufficiente. #text1 fa riferimento all'elemento DOM con id=text1 e il contenuto delle parentesi graffe sono gli stili rilevanti.

22

Se solo si desidera modificare una certa parte della stringa di ritorno, si può usare htmlOutput invece di textOutput

Sul lato server solo tornare

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

In questo modo, Brillante UI si esibirà HTML.

+1

dovrebbe essere 'htmlOutput' – martin

14

in ui.r:

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

in server.r:

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

La soluzione da @MikeP funziona anche con p(), fx p("some text", style = "color:red), in modo da poter anche solo avvolgere che in un renderText() dal server se vuoi visualizzarlo in modo dinamico.