R shiny教程-3:添加小部件到Shiny App

Python012

R shiny教程-3:添加小部件到Shiny App,第1张

Shiny app的许多功能都是通过一个小的部件进行充实和调控的。

Shiny 有一套自定义的小工具,都是通过R函数实现。

例如,Shiny提供了一个名为actionButton的函数来创建一个动作按钮,以及一个名为sliderInput的函数来创建一个滑条。

更多信息可以参看 Twitter Bootstrap 。

添加工具,就是将这些工具对应的函数添加到in sidebarPanel 或 mainPanel 。添加工具与添加HTML 内容类似,直接在ui.R中的面板插入就可以了。

每一个工具函数的前两个参数都是一致的:

为方便寻找和学习如何添加需要的小部件到自己的Shiny App, 可以参考 Shiny Widgets Gallery , 这个图库显示了每个Shiny的小部件,并演示了这些小部件如何工作以及如何添加(点击See code)。

点击See code,即可查看如何向Shiny app添加小部件。

Add control widgets

系列文章:

R shiny教程-1:一个 Shiny app的基本组成部分

R shiny教程-2:布局用户界面

Shiny Server安装

在前面 一个 Shiny app的基本组成部分 解释了构建一个shiny app的两个部分以及如何运行。

因此,最简单的shiny app如下:

运行之后,生成的是一个空白的网页。

使用fluidPage在ui.R种创建一个界面,有标题栏和工具栏。工具栏包含一个侧栏面板和一个主面板。

titlePanel 和 sidebarLayout 是fluidPage种最常用的元素。

sidebarLayout 中最常用的功能:

这两个功能可以放置用户自定义内容到侧边栏和主界面。

侧边栏默认出现在左边,但是也可以设置到右边(sidebarLayout设置参数position = "right")。

上面创建了一个基本Shiny app,也可以通过其他函数添加自定义内容。navbarPage 可以设置导航栏添加多个多个交互界面。或者,可以使用fluidRow和column从grid系统构建布局。了解Shiny app各种布局,查看文章 Shiny Application Layout Guide 。

通过向*Panel中添加内容来丰富Shiny app。在,上面的例子中,使用sidebarPanel()函数向侧边栏添加标题, mainPanel向主界面添加了标题。

添加文本内容时,使用HTML 标签也是很方便和强大的。了解过HTML 的人都明白HTML 标签的作用与用法。

创建一个标题,如下:

各级标题都可以实现,h1()到h5()

然后,将创建的标题传递给Shiny app:h1("My title")作为参数传递给 titlePanel , sidebarPanel , 或 mainPanel 。

文本对齐方式也可以设置。例如,居中,h6("Episode IV", align = "center");HTML的所有标签都可以作为一个参数传递给Shiny的函数。

Shiny提供了许多标签(tag function)用于格式化文本。

图片可以增强应用程序的外观,帮助用户理解内容。img函数在应用程序中放置图片。

注:img会在特定位置寻找存放的图片。在Shiny app目录下一个名为www的文件夹,这个目录就是放置ui.R, server.R的位置。Shiny以一种特殊的方式处理www文件夹,Shiny会共享这个www下的文件给web使用的用户;所以,www文件夹一般存放图片、样式表和其他的应用程序的web组件

更多的tag functions可以参考:

Shiny written-tutorial lesson2

Shiny Widgets Gallery

系列文章:

R shiny教程-1:一个 Shiny app的基本组成部分

R shiny教程-2:布局用户界面

Shiny Server安装

R语言使用shiny包创建web界面。

使用 shinydashboard 包和 shinytheme ,美化界面样式,设置界面主题,提升界面整体水平。

Shiny界面图库

shinydashboard

shinytheme界面主题

shinydashboard包创建的基础界面样式分为三个板块:标题,侧边栏,主界面。

shiny包支持 recharts 包的使用,可以创建界面的交互式图形

shinyapps网址

Rstudio推出了 shiny shinyapps 两个包,shiny可以帮助我们更快更好的开发一些app,然后shinyapps可以提供了一个免费的云服务器,供我们发布app。

以知乎 用R语言分析NBA球员得分 分析结果为主题,做web界面展示。

侧边栏设置两个选项:datas display和players' score,点击不同的选项,展示对应的内容。

datas display界面展现3个数据框:NBA,Away team,Host team。通过show 10/25/50 entries 等控制页面展示数值的条数;右上角search实现数值的搜索功能(使用DT包实现)。

players' score展示主队、客队球员得分情况。使用ggplot2包绘制客队各个球员的得分情况

使用 recharts 包绘制主队各个球员的得分情况,recarts包实现图形交互式展现。

建立完UI界面后,设置对应的数值,表格,图形,使web界面变成动态的界面。

挣扎了好久终于把界面创建成功了,shiny的初步学习先画个句号。