有没有办法在 R Shiny 中*输出*星级?
Is there a way to *output* star rating in R Shiny?
亲爱的,
在我的应用中,用户对一些东西进行评分。
我想根据 IMDB 中的评分输出 5 星评分。
我的数字里有分数,希望星星能容纳。
我根本不知道 Java 也 Java 脚本。
有类似的包吗?或做什么?
提前致谢。
您需要创建两个文件,一个 css
和您的应用...即:
- app.R
-- www/
------ stars.css
您的 stars.css
文件将包含 HTML 标记的规则,在 header::[=19 中使用 includeCSS
后,这些规则将根据我们的应用进行更新=]
.ratings {
position: relative;
vertical-align: middle;
display: inline-block;
color: #b1b1b1;
overflow: hidden;
}
.full-stars{
position: absolute;
left: 0;
top: 0;
white-space: nowrap;
overflow: hidden;
color: #fde16d;
}
.empty-stars:before,
.full-stars:before {
content: "0505050505";
font-size: 44pt; /* Make this bigger or smaller to control size of stars*/
}
.empty-stars:before {
-webkit-text-stroke: 1px #848484;
}
.full-stars:before {
-webkit-text-stroke: 1px orange;
}
/* Webkit-text-stroke is not supported on firefox or IE */
/* Firefox */
@-moz-document url-prefix() {
.full-stars{
color: #ECBE24;
}
}
/* IE */
<!--[if IE]>
.full-stars{
color: #ECBE24;
}
<![endif]-->
在我们的应用中,我们希望最终标记显示如下:
<div class="ratings">
<div class="empty-stars"></div>
<div class="full-stars" style="width:70%"></div>
</div>
因此,为此我们使用了 UI 静态元素的组合,然后是 uiOutput
,它与服务器端的 renderUI
相匹配:
library(shiny)
ui <- fluidPage(
includeCSS("www/stars.css"),
sliderInput(inputId = "n_stars", label = "Ratings", min = 0, max = 5, value = 3, step = .15),
tags$div(class = "ratings",
tags$div(class = "empty-stars",
uiOutput("stars_ui")
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output, session) {
output$stars_ui <- renderUI({
# to calculate our input %
n_fill <- (input$n_stars / 5) * 100
# element will look like this: <div class="full-stars" style="width:n%"></div>
style_value <- sprintf("width:%s%%", n_fill)
tags$div(class = "full-stars", style = style_value)
})
}
# Run the application
shinyApp(ui = ui, server = server)
然后我们的应用程序使用滑块输入输出来创建星星的填充百分比。
亲爱的,
在我的应用中,用户对一些东西进行评分。
我想根据 IMDB 中的评分输出 5 星评分。
我的数字里有分数,希望星星能容纳。
我根本不知道 Java 也 Java 脚本。
有类似的包吗?或做什么?
提前致谢。
您需要创建两个文件,一个 css
和您的应用...即:
- app.R
-- www/
------ stars.css
您的 stars.css
文件将包含 HTML 标记的规则,在 header::[=19 中使用 includeCSS
后,这些规则将根据我们的应用进行更新=]
.ratings {
position: relative;
vertical-align: middle;
display: inline-block;
color: #b1b1b1;
overflow: hidden;
}
.full-stars{
position: absolute;
left: 0;
top: 0;
white-space: nowrap;
overflow: hidden;
color: #fde16d;
}
.empty-stars:before,
.full-stars:before {
content: "0505050505";
font-size: 44pt; /* Make this bigger or smaller to control size of stars*/
}
.empty-stars:before {
-webkit-text-stroke: 1px #848484;
}
.full-stars:before {
-webkit-text-stroke: 1px orange;
}
/* Webkit-text-stroke is not supported on firefox or IE */
/* Firefox */
@-moz-document url-prefix() {
.full-stars{
color: #ECBE24;
}
}
/* IE */
<!--[if IE]>
.full-stars{
color: #ECBE24;
}
<![endif]-->
在我们的应用中,我们希望最终标记显示如下:
<div class="ratings">
<div class="empty-stars"></div>
<div class="full-stars" style="width:70%"></div>
</div>
因此,为此我们使用了 UI 静态元素的组合,然后是 uiOutput
,它与服务器端的 renderUI
相匹配:
library(shiny)
ui <- fluidPage(
includeCSS("www/stars.css"),
sliderInput(inputId = "n_stars", label = "Ratings", min = 0, max = 5, value = 3, step = .15),
tags$div(class = "ratings",
tags$div(class = "empty-stars",
uiOutput("stars_ui")
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output, session) {
output$stars_ui <- renderUI({
# to calculate our input %
n_fill <- (input$n_stars / 5) * 100
# element will look like this: <div class="full-stars" style="width:n%"></div>
style_value <- sprintf("width:%s%%", n_fill)
tags$div(class = "full-stars", style = style_value)
})
}
# Run the application
shinyApp(ui = ui, server = server)
然后我们的应用程序使用滑块输入输出来创建星星的填充百分比。