shiny 之 滑块控件
风萧萧兮易水寒
1引言
认识 shiny 的 slider 控件。
2解析
功能
通过左边的滑块移动,右边输出的表格内容也会同时变化:
ui 部分
library(shiny)
# Define UI for slider demo app ----
ui <- fluidPage(
# App title ----
titlePanel("Sliders"),
# Sidebar layout with input and output definitions ----
sidebarLayout(
# Sidebar to demonstrate various slider options ----
sidebarPanel(
# Input: Simple integer interval ----
sliderInput("integer", "Integer:",
min = 0, max = 1000,
value = 500),
# Input: Decimal interval with step value ----
sliderInput("decimal", "Decimal:",
min = 0, max = 1,
value = 0.5, step = 0.1),
# Input: Specification of range within an interval ----
sliderInput("range", "Range:",
min = 1, max = 1000,
value = c(200,500)),
# Input: Custom currency format for with basic animation ----
sliderInput("format", "Custom Format:",
min = 0, max = 10000,
value = 0, step = 2500,
pre = "$", sep = ",",
animate = TRUE),
# Input: Animation with custom interval (in ms) ----
# to control speed, plus looping
sliderInput("animation", "Looping Animation:",
min = 1, max = 2000,
value = 1, step = 10,
animate =
animationOptions(interval = 300, loop = TRUE))
),
# Main panel for displaying outputs ----
mainPanel(
# Output: Table summarizing the values entered ----
tableOutput("values")
)
)
)
比较简单,在 sidebarPanel 里添加了 4 个滑块控件,我们看其中一个:
sliderInput("integer", "Integer:",
min = 0, max = 1000,
value = 500)
为 控件 ID, 控件显示标签, 最小值, 最大值, 默认值。
pre ,sep 参数可以显示控件标签样式:
animate 参数可以使滑动条自己移动,点击下面的三角形标至即可。
使用 animationOptions 来进一步控制移动效果, interval 为每次移动间隔, loop 表示是否循环移动。有点动图的感觉了。
mainPanel 里输出表格,使用 tableOutput,给个 id 即可。
server 部分
# Define server logic for slider examples ----
server <- function(input, output) {
# Reactive expression to create data frame of all input values ----
sliderValues <- reactive({
data.frame(
Name = c("Integer",
"Decimal",
"Range",
"Custom Format",
"Animation"),
Value = as.character(c(input$integer,
input$decimal,
paste(input$range, collapse = " "),
input$format,
input$animation)),
stringsAsFactors = FALSE)
})
# Show the values in an HTML table ----
output$values <- renderTable({
sliderValues()
})
}
# Create Shiny app ----
shinyApp(ui, server)
首先构建了一个 data.frame ,其中的 Value 列传入 ui 的输入变量,最后 使用 reactive 来保存数据框。
mainPanel 的展示使用 renderTable , output$values 连接 ui 部分, sliderValues() 格式传入数据。
最后大家可以自己把代码复制一下跑一遍,看看效果,也可以去在线网址。
网址:
https://shiny.rstudio.com/gallery/sliders.html
3萧瑟
人至暮年, 万物萧瑟之景, 是回忆。
欢迎加入生信交流群。加我微信我也拉你进 微信群聊 老俊俊生信交流群
哦,数据代码已上传至QQ群,欢迎加入下载。
群二维码:
老俊俊微信:
知识星球:
所以今天你学习了吗?
欢迎小伙伴留言评论!
今天的分享就到这里了,敬请期待下一篇!
最后欢迎大家分享转发,您的点赞是对我的鼓励和肯定!
如果觉得对您帮助很大,赏杯快乐水喝喝吧!
往期回顾
◀跟着 NC (Nature Comm) 学画图: 箱线图嵌套并分面添加文本注释
◀跟着 NC (Nature Communications) 学画图: 火山图进阶
◀...