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

Python019

R shiny教程-2:布局用户界面,第1张

在前面 一个 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安装

使用时shiny时经常要使用DT包展示数据表格,表格的参数很多,容易忘记,做个记录备查.

常用链接: DT包介绍 , DT的API

放在 options(DT.options = list()) 里可以对脚本里的所有 datatable() 的部分参数一起设置.常用的是将表格的描述文字改成中文.

datatable(options = list(dom = 'lftipr'))

-参数 l 控制显示

datatable(rownames = FALSE)

datatable(caption = '标题', rownames = c(), colnames = c()

datatable(options = list(ordering = F, order = list(0, 'asc')) 0代表第一列,asc代表升序,desc代表降序.

datatable(class = 'hover') 多种样式可选

更多样式

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的初步学习先画个句号。