在学完基础的网页布局后,我们就可以学学如何在网页中加一些控件,让网页显得可以交互(要想真的能够交互,还得学下一节的内容)。
那什么叫做控件呢?所谓的控件就是用户能够与其互动的网页元素。Shiny自带的一些控制插件如下:
函数 | 插件功能 |
---|---|
actionButton | 操作按钮 |
checkboxGroupInput | 一组复选框 |
checkboxInput | 单个复选框 |
dateInput | 单个日期选择 |
dateRangeInput | 一组日期选择 |
fileInput | 文件上传A file upload control wizard |
helpText | 可添加到输入窗体的帮助文本 |
numericInput | 数字输入 |
radioButtons | 单选按钮 |
selectInput | 一个可供选择的框 |
sliderInput | 滑动条 |
submitButton | 提交按钮 |
textInput | 输入文本的字段 |
具体这些函数在网页展示是什么效果呢? 其实Shiny也想到了,所以给了一个控件全景图
增加控件
让我们继续从一个非常j简单的布局开始,尝试添加几个控件。
ui <- fluidPage(
titlePanel("Hello Widgets"),
sidebarLayout(
sidebarPanel(),
mainPanel()
)
)
以文本输入控件textInput
为例,
textInput(inputId, label, value = "", width = NULL,
placeholder = NULL)
前两个参数分别是该控件的唯一ID和在网页中显示的名字,所有控件的前两个都是这两个参数。第一个参数在所有插件中必须唯一,后续的数据交互时shiny需要根据这个ID获取输入信息。
加入该控件的代码如下
ui <- fluidPage(
titlePanel("Hello Widgets"),
sidebarLayout(
sidebarPanel(
h1("Please input your name"),
textInput("input1", label = "", value = "",
placeholder = "your name")
),
mainPanel(
h1("Showing results")
)
)
)
输入对应的是HTML中的<input>
元素,里面的属性type="text"
表明它的输入数据是文本。
练习
这部分的内容主要是了解,在后续需要时挑选对应的工具,如下 是练习题
如下是我写的代码
library(shiny)
ui <- fluidPage(
titlePanel("censusVis"),
sidebarLayout(
sidebarPanel(
helpText("Create demographic maps with information from the 2010 US census"),
selectInput("checkBox1",
label = "choose a variable to display",
choices = list("A"=1,
"B"=2)
),
sliderInput("sliderInput",
label = "Range of interest",
min = 0, max=100, value = c(0,100), step=10)
),
mainPanel(
)
)
)
server <- function(input, output){
}
shinyApp(ui = ui, server = server)
那么如何根据输入调整输出呢?这就是下一节的内容了
参考资料
传送门
Shiny基础教程: