在 Shiny App 中更改文本的颜色和字体
Posted
技术标签:
【中文标题】在 Shiny App 中更改文本的颜色和字体【英文标题】:Change the color and font of text in Shiny App 【发布时间】:2014-07-25 19:05:19 【问题描述】:我在server.R
中使用以下代码在主面板中显示文本。这正是它应该工作的方式。
output$text1 <- renderText(
if(input$ag == 0) return(NULL)
return('First 20 rows for requested AG')
)
有什么办法可以改变文字的字体和颜色吗?
【问题讨论】:
AFAIK renderText 只是像 cat 一样输出它的文本。您可能需要使用 CSS 来更改文本样式。请参阅此处了解(我认为)包含您的问题的 Google 网上论坛讨论。 刚刚意识到我没有提供网址:/here it is(乍一看,它可能不在renderText
的上下文中)。
【参考方案1】:
您可以按照@jbaums 的指示使用css
library(shiny)
runApp(list(
ui = bootstrapPage(
numericInput('n', 'Number of obs', 100),
textOutput('text1'),
tags$head(tags$style("#text1color: red;
font-size: 20px;
font-style: italic;
"
)
)
),
server = function(input, output)
output$text1 <- renderText( paste("hello input is",input$n) )
))
通常您会将其包含在styles.css
文件中,但此处显示为内联以自包含。 #text1
指的是带有id=text1
的DOM 元素,大括号的内容就是相关的样式。
【讨论】:
对于任何确实想要分离 R 和 CSS 的人,此博客包含如何使用单独的 CSS 文件执行此操作的好示例:shiny.rstudio.com/articles/css.html【参考方案2】:在ui.r
:
span(textOutput("message"), style="color:red")
在server.r
:
output$message <- renderText("This is some red text")
【讨论】:
【参考方案3】:如果只想更改返回字符串的某一部分,可以使用htmlOutput
而不是textOutput
在服务器端返回
output$text1 <- renderText( paste("hello input is","<font color=\"#FF0000\"><b>", input$n, "</b></font>") )
这样,Shiny UI 将执行 HTML。
【讨论】:
【参考方案4】:@MikeP 的解决方案也适用于p()
、fx p("some text", style = "color:red)
,因此如果您想动态显示它,也可以将其包装在来自服务器的renderText()
中。
【讨论】:
太糟糕了,这在?p
中没有得到很好的记录。以上是关于在 Shiny App 中更改文本的颜色和字体的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 react 和 javascript 每秒更改部分文本的字体颜色?