我有一个现有的Shiny脚本,其中包含Shiny库中的标准小部件。现在,我想添加一些东西以图形方式显示温度吗?这将是一个只读值,因此除非可以锁定并只能以编程方式更改滑块,否则使用滑块是没有意义的。那可能吗?如果没有,还有什么建议?
要澄清:
是否可以将Shiny滑块设为只读。用户无法滑动它,但可以通过编程方式对其进行更改。这是一个闪亮的滑块:
library(shiny)
ui <- fluidPage(
sliderInput("aa", "Temp",
min = -20, max = 20,
value = 10, step = 10)
)
server <- function(input, output) { }
shinyApp(ui, server)
我不熟悉Shiny Dashboard,但我看到了taskItem。是否可以将它们“插入”并与使用FluidPage,sidebarPanel,mainPanel的普通Shiny应用程序一起使用?如何删除项目符号和百分比?这是taskItem的示例。
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(
taskItem(value = temp <- 89, color = "red",
"Temp"
))
)
server <- function(input, output) { }
temp <- 89
shinyApp(ui, server)
答案 0 :(得分:0)
AFAIK,sliderInput
不能用作输出。但是,这是使用progressBar
包中的shinyWidgets
的潜在解决方案
library(shiny)
library(shinyWidgets)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
h3("Sidebar")
),
mainPanel(
br(), br(), br(),
progressBar("tempbar", value = 0, title = "Temperature", status = "danger")
)
)
)
server <- function(input, output, session) {
temp <- 89
updateProgressBar(session, id = "tempbar", value = temp)
}
shinyApp(ui, server)
shiny app with temperature bar
用您可能拥有的所有计算值替换temp
中的server
。对于固定温度值,只需在ui
中进行设置即可,无需使用updateProgressBar
。默认情况下,progressBar
的范围是0-100。要进行修改,请参见文档。
答案 1 :(得分:0)
您可以使用updateSliderInput
来达到这种目的。将其与shinyjs::disabled
结合使用,您将得到想要的东西。但是,我会寻找一种不那么老套的解决方案:
library(shiny)
library(shinyjs)
ui <- fluidPage(
## add style to remove the opacity effect of disabled elements
tags$head(
tags$style(HTML("
.irs-disabled {
opacity: 1
}")
)
),
useShinyjs(),
disabled(sliderInput("aa", "Temp",
min = -20, max = 20,
value = 10, step = 10)),
actionButton("Change", "Change")
)
server <- function(input, output, session) {
observeEvent(input$Change, {
new_temp <- sample(seq(-20, 20, 10), 1)
updateSliderInput(session, "aa", value = new_temp)
})
}
shinyApp(ui, server)