2014-06-04 6 views
22

Ich verwende den folgenden Code in server.R, um den Text im Hauptbereich anzuzeigen. Dies funktioniert genau so, wie es funktionieren sollte.Ändern Sie die Farbe und Schriftart des Textes in Shiny App

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

Gibt es eine Möglichkeit, die Schriftart und Farbe des Textes zu ändern?

+0

AFAIK renderText gibt seinen Text nur wie Katze aus. Sie müssen wahrscheinlich CSS verwenden, um den Textstil zu ändern. Hier finden Sie eine Google Groups-Diskussion, in der (denke ich) auch Ihr Problem enthalten ist. – jbaums

+1

Ich habe festgestellt, dass ich die URL nicht angegeben habe:/[hier ist es] (https://groups.google.com/forum/#!topic/shiny-discuss/xWyaOryOkVs) (und auf den zweiten Blick möglicherweise nicht in der Kontext von 'renderText'). – jbaums

Antwort

23

CSS können Sie als @jbaums

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

Normalerweise würden Sie dies in einer styles.css Datei enthalten, aber es ist inline hier gezeigten Selbstversorger zu sein. #text1 bezieht sich auf das DOM-Element mit id=text1 und der Inhalt der geschweiften Klammern sind die relevanten Stile.

22

Wenn nur einen bestimmten Teil des zurückkehrenden Zeichenkette ändern wollen, kann man htmlOutput anstelle von textOutput

Auf Server-Seite nur

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

Auf diese Weise zurückkehren, werden glänzende UI HTML ausführen.

+1

sollte es 'htmlOutput' sein – martin

14

in ui.r:

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

in server.r:

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

Die Lösung von @MikeP arbeitet auch mit p(), fx p("some text", style = "color:red), so können Sie auch nur, dass wickeln in einem renderText() vom Server wenn Sie es dynamisch anzeigen möchten.