shinydashboard与shiny_史上最全(二)

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!

对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。

3901436-b7afc0d4654a1e5d

作者:李誉辉  

四川大学在读研究生


前言

这是shinydashboard与shiny_史上最全第二篇,上一篇:

shinydashboard与shiny_史上最全(一)

第一部分

  • 1 简介

  • 2 shiny文件的创建和运行

  • 3 shinydashboard

         3.1 标题栏(Header)


第二部分

       3.2 输入与输出

       3.3 侧边栏

       3.4 主体(Body)

       3.5 布局(Layouts)

       4 shiny框架



第三部分

  • 5 选项卡(tabset)

  • 6 美化

  • 7 CSS语法

  • 8 与leaflet结合

  • 9 web部署



3.1

输入与输出


shinydashboard()支持shiny自带的所有~Input()对象,
这些对象同样也能放入box中。
所有Input对象

actionButton(), 激活按钮。

actionLink(), 激活链接。

checkboxInpu(), 勾选框。

checkboxGroupInput(), 勾选组合框。

dateInput(), 日期选择框。

dateRangeInput(), 日期范围选择框。

fileInput(),上传文件框。

downloadButton(), 下载数据。

numericInput(), 数字选择框。

passwordInput(), 密码输入框。

radioButtons(), 单选按钮。

selectInput(), 选择框。

sliderInput(), 滑动条。

submitButton(), 提交按钮。

textInput(), 文本输入框。

输出需要一对组合函数,在UI端使用~Output(), 在server端使用render~(),
2者通过变量名进行匹配。shinydashboard同样支持所有shiny自带的输出组合。

所有输出组合:

renderPlot() 与 plotOutput(), 绘图输出。

renderText() 与 textOutput(), 文本输出。

renderPrint() 与 verbatimTextOutput(), 打印输出。

renderTable() 与 tableOutput(), 以HTML表格形式输出。

renderImage() 与 imageOutput(), 读取图片输出。

renderDataTable() 与 dataTableOutput(), 交互式表格输出,来自DT包。

renderUI() 与 uiOutput()/htmlOutput(), 当作html语法输出。

3.2.1 滑动条(slider)

UI端代码如下:

 1library(shiny)
2library(shinydashboard)
3
4dashboardPage(
5  dashboardHeader(title = "滑动条传入参数"),
6  dashboardSidebar(
7    # 第1个滑动条:传入简单的整数
8    sliderInput("integer", "整数:", 
9                min=0, max=1000, value=500), # 最下值为0,最大值为1000,默认为500
10
11    # 第2个滑动条,传入小数
12    sliderInput("decimal", "小数:", 
13                min = 0, max = 1, value = 0.5, step= 0.1), # 步长为0.1
14
15    # 第3个滑动条,传入区间范围
16    sliderInput("range", "范围:",
17                min = 1, max = 1000, value = c(200,500)), # 默认范围为200到500
18
19    # 第4个滑动条,传入货币格式,并附带动画按钮
20    sliderInput("format", "货币格式:", 
21                min = 0, max = 10000, value = 0, step = 2500, # 步长为2500
22                format="$#,##0", locale="us", animate=TRUE), # 格式为千分位数字,locale美元
23
24    # 第5个滑动条,用于控制动画速度
25    sliderInput("animation", "循环动画", 
26                1, 2000, 1, step = 10, # 最小1,最大2000,步长10,单位ms(毫秒)
27                animate=animationOptions(interval=300, loop=T)) # 设定动画选项
28    ),
29  dashboardBody( # box内同样可以插入shiny的输出函数
30    fluidRow(box(tableOutput("values"))) # 以HTML表格形式输出变量values
31  )
32)


server端代码如下:

这里涉及到反应表达式,通常是先计算反应表达式,生成output对象需要的变量。
后面的output直接使用变量。调用反应表达式需要加括号


 1library(shiny)
2
3# 自定义服务器脚本
4shinyServer(function(input, output) {
5  # 反应表达式:创建一个数据框,用来存放所有输入值。  
6  sliderValues <- reactive({
7    # Compose data frame
8    data.frame(
9      Name = c("整数", 
10               "小数",
11               "范围",
12               "货币格式",
13               "动画"),
14      Value = as.character(c(input$integer, 
15                             input$decimal,
16                             paste(input$range, collapse=' '),
17                             input$format,
18                             input$animation)), 
19      stringsAsFactors=FALSE)
20  }) 
21
22  # 输出组件,新增变量values
23  output$values <- renderTable({ # 以表格的形式输出
24    sliderValues() # 调用反应表达式需要加括号()
25  })
26})


运行结果如下:


3901436-24d3dcd837f2a4b8


3.2.2 选择框(selectInput)及勾选框

与shiny中用法一致,UI端代码如下:

 1library(shiny)
2library(shinydashboard)
3
4dashboardPage(
5  dashboardHeader(title = "选择框传入参数"),
6  dashboardSidebar(
7    # 定义选择框
8    selectInput("variable",  # 传入变量名称
9                "选择变量:", # 提示文字
10                # 选项内容,左边是显示字符,右边是传入变量名称,若是向量传递则字符与变量相同
11                list("气缸数" = "cyl",  
12                     "变速箱类型" = "am", # 列表传递,可以修改显示
13                     "档位数" = "gear")),
14    # 定义勾选框
15    checkboxInput("outliers",  # 传入变量名称
16                  "显示离群值", # 勾选框提示文字
17                  FALSE)  # 默认状态
18    ),
19  dashboardBody(
20    fluidRow(box(plotOutput("mpgPlot"), # 以图片形式输出mpgPlot变量
21                 title = h3(textOutput("caption")))) # 以三级标题形式输出caption变量
22  )
23)


server端代码如下:

 1library(shiny)
2library(datasets)
3
4# 数据初始化:将不依赖用户输入的数据,先在服务器脚本中计算出来
5mpgData <- mtcars
6## 变速箱变量因子化,增加标签:自动挡和手动挡
7mpgData$am <- factor(mpgData$am, labels = c("Automatic", "Manual"))
8
9# 自定义服务器脚本:反应mpg与其它3个变量之间的关系并绘图
10shinyServer(function(input, output) {
11  # 首先定义反应表达式,后面的output对象都会用到该表达式
12  formulaText <- reactive({
13    paste("mpg ~", input$variable)
14  })
15
16  # 打印caption标题,以文本形式输出
17  output$caption <- renderText({
18    formulaText()
19  })
20  # 根据公式输出图形,仅仅当勾选离群值时,才包含离群值
21  output$mpgPlot <- renderPlot({
22    boxplot(as.formula(formulaText()), 
23            data = mpgData,
24            outline = input$outliers)
25  })
26})

</

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值