美文网首页Rshiny
R Shiny 2. 基础UI

R Shiny 2. 基础UI

作者: Jason数据分析生信教室 | 来源:发表于2022-04-27 22:53 被阅读0次

1.1基础UI

library(shiny)

ui <- fluidPage(
  # front end interface
)

server <- function(input, output, session) {
  # back end logic
}

shinyApp(ui, server)

1.1 输入

1.1.1 常规构架

所有的输入都包含了一个同样的变量inputID

这个inputID用来连接前端和后台。如果UI端口输入的ID是name 那么后台server就是input$name

大多数inputID都有一个参数就是label,这是为了UI端的可读性,显示给用户看的。除此以外inputID还有一个参数就是value 。下面就是一个完整的例子。包含了name, label, valueinputID

sliderInput("min", "Limit (minimum)", value = 50, min = 0, max = 100)

1.1.2 文字

textInput(): 少量文字

passwordInput(): 密码

textAreaInput(): 成篇文字

ui <- fluidPage(
  textInput("name", "What's your name?"),
  passwordInput("password", "What's your password?"),
  textAreaInput("story", "Tell me about yourself", rows = 3)
)

1.1.3 数字

可以通过numericInput()或者sliderInput()创建输入框.

ui <- fluidPage(
  numericInput("num", "Number one", value = 0, min = 0, max = 100),
  sliderInput("num2", "Number two", value = 50, min = 0, max = 100),
  sliderInput("rng", "Range", value = c(10, 20), min = 0, max = 100)
)

1.1.4 日期

ui <- fluidPage(
  dateInput("dob", "When were you born?"),
  dateRangeInput("holiday", "When do you want to go on vacation next?")
)

1.1.5 选项

animals <- c("dog", "cat", "mouse", "bird", "other", "I hate animals")

ui <- fluidPage(
  selectInput("state", "What's your favourite state?", state.name),
  radioButtons("animal", "What's your favourite animal?", animals)
)

还可以设置图标

ui <- fluidPage(
  radioButtons("rb", "Choose one:",
    choiceNames = list(
      icon("angry"),
      icon("smile"),
      icon("sad-tear")
    ),
    choiceValues = list("angry", "happy", "sad")
  )
)

dropdown选项是

ui <- fluidPage(
selectInput(
"state", "What's your favourite state?", [state.name](<http://state.name/>),
multiple = TRUE
)
)

如果选项很多的话可以参考

Using selectize input

也可以设置多选框

ui <- fluidPage(
  checkboxGroupInput("animal", "What animals do you like?", animals)
)

check就是yes,没有check就是no的设置。

ui <- fluidPage(
  checkboxInput("cleanup", "Clean up?", value = TRUE),
  checkboxInput("shutdown", "Shutdown?")
)

1.1.6 上传文件

ui <- fluidPage(
    fileInput("upload", NULL)
)

1.1.7 动作按钮

ui <- fluidPage(
  actionButton("click", "Click me!"),
  actionButton("drink", "Drink me!", icon = icon("cocktail"))
)

actionButton

ui <- fluidPage(
  fluidRow(
    actionButton("click", "Click me!", class = "btn-danger"),
    actionButton("drink", "Drink me!", class = "btn-lg btn-success")
  ),
  fluidRow(
    actionButton("eat", "Eat me!", class = "btn-block")
  )
)

1.2 输出

和输入一样,输出也需要自己唯一的ID。如果你在UI定义一个输出的结果的ID是plot,那么在后端这个结果就是server$plot。然后在后端服务器上,结果的输出都用到对应的render的函数。

1.2.1 文字

ui <- fluidPage(
  textOutput("text"),
  verbatimTextOutput("code")
)
server <- function(input, output, session) {
  output$text <- renderText({ 
    "Hello friend!" 
  })
  output$code <- renderPrint({ 
    summary(1:10) 
  })
}
shinyApp(ui, server)

library(shiny)
ui <- fluidPage(
    textOutput("text"),
    verbatimTextOutput("print")
)
server <- function(input, output, session) {
    output$text <- renderText("hello!")
    output$print <- renderPrint("hello!")
}
shinyApp(ui, server)

1.2.2 表格

有两个方式可以展现data.frame

  • tableOutput() renderTable()

    用来展现一个完整的data.frame
    
    
  • dataTableOutput() renderDataTable()

    可以把data.frame分页展示

ui <- fluidPage(
  tableOutput("static"),
  dataTableOutput("dynamic")
)
server <- function(input, output, session) {
  output$static <- renderTable(head(mtcars))
  output$dynamic <- renderDataTable(mtcars, options = list(pageLength = 5))
}

1.2.3 图

plotOutput()and renderPlot()

library(shiny)
ui <- fluidPage(
    plotOutput("plot", width = "400px")
)
server <- function(input, output, session) {
    output$plot <- renderPlot(plot(1:5), res = 96)
}
shinyApp(ui, server)

res设置图片大小,推荐保持96,这样界面可以看起来和R一样显示。

Plot比较特殊,既可以是输入窗口,也可以是输出窗口,之后的章节会介绍如何设置成可用户交互式图形。

1.2.4 下载文件

实现下载需要一些别的操作,会在之后的章节里介绍。

相关文章

  • R Shiny 2. 基础UI

    1.1基础UI 1.1 输入 1.1.1 常规构架 所有的输入都包含了一个同样的变量inputID 这个input...

  • 「R shiny 基础」初识Shiny

    传送门 Shiny基础教程: 「R shiny 基础」初识Shiny 「R shiny 基础」如何进行网页布局 「...

  • 「R shiny 基础」如何进行网页布局

    在第一篇「R shiny 基础」初识Shiny ,我们了解了Shiny应用主要分为两个部分,UI对象和server...

  • shiny-初识

    shiny 初识 shiny是一个R包,能够以网页交互式显示图表。需要两个文件ui.R,server.R。其中ui...

  • 利用CSS样式干掉Shiny 一些讨厌的空隙

    在我的「R shiny练习」一个在线火山图的Shiny应用中,我在ui部分一开始用的是fluidePage()结果...

  • Shiny 教程1

    简介shiny 什么是shiny: Shiny 是一个开源的 R 包,它为使用 R 构建 Web 应用提供了一个优...

  • R Shiny 基础. 2 reactivity

    Shiny是一个网页端app,所以得同时满足多个用户的独立操作。不能因为小A修改了输入导致小B想要看的结果出现了错...

  • LearningR-shiny

    1. shiny 1.1 About shiny 1.2 shiny examples 2. rsconnect ...

  • R语言:创建web界面

    1、shiny包 R语言使用shiny包创建web界面。使用shinydashboard包和shinytheme,...

  • [shiny 2]

    ui 用户自定义界面设置server 服务端脚本 Shiny Text这个应用程序展示的是直接打印R对象,以及用H...

网友评论

    本文标题:R Shiny 2. 基础UI

    本文链接:https://www.haomeiwen.com/subject/entkertx.html