使用 shinydashboard
除了 shiny 扩展包提供的函数之外,RStudio 也开发了一个 shinydashboard 扩展包
(http://rstudio.github.io/shinydashboard/),它呈现数据的方式就是专门用于概览或监测数据。
接下来的例子旨在说明创建一个简易仪表板有多简单,这个仪表板可以按每周和每月
的时间刻度显示 CRAN 上下载量最多的最受欢迎的 R 扩展包。
数据源由 cranlogs(http://cranlogs.r-pkg.org) 提供。首先运行以下代码安装所需的扩
展包:
install_ _packages(c("shinydashboard", "cranlogs"))
然后,快速查看一下 CRAN 下载数据的数据源:
library(cranlogs)
cran_ _top_ _downloads()
## No encoding supplied: defaulting to UTF-8.
## rank package count from to
## 1 1 Rcpp 9682 2016-08-18 2016-08-18
## 2 2 digest 8937 2016-08-18 2016-08-18
## 3 3 ggplot2 8269 2016-08-18 2016-08-18
## 4 4 plyr 7816 2016-08-18 2016-08-18
## 5 5 stringi 7471 2016-08-18 2016-08-18
## 6 6 stringr 7242 2016-08-18 2016-08-18
## 7 7 jsonlite 7100 2016-08-18 2016-08-18
## 8 8 magrittr 6824 2016-08-18 2016-08-18
## 9 9 scales 6397 2016-08-18 2016-08-18
## 10 10 curl 6383 2016-08-18 2016-08-18
cran_ _top_ _downloads("last-week")
## No encoding supplied: defaulting to UTF-8.
## rank package count from to
## 1 1 Rcpp 50505 2016-08-12 2016-08-18
## 2 2 digest 46086 2016-08-12 2016-08-18
## 3 3 ggplot2 39808 2016-08-12 2016-08-18
## 4 4 plyr 38593 2016-08-12 2016-08-18
## 5 5 jsonlite 36984 2016-08-12 2016-08-18
## 6 6 stringi 36271 2016-08-12 2016-08-18
## 7 7 stringr 34800 2016-08-12 2016-08-18
## 8 8 curl 33739 2016-08-12 2016-08-18
## 9 9 DBI 33595 2016-08-12 2016-08-18
## 10 10 magrittr 32880 2016-08-12 2016-08-18
熟悉了仪表板中显示的数据格式之后,就可以考虑构建仪表板了,这与构建典型
的 shiny 应用程序完全相同。为了充分利用 shinydashboard 扩展包,最好提前浏览
http://rstudio.github.io/shinydashboard/structure.html,对它提供的优质组件有一个了解。
与创建 shiny 应用程序类似,我们从用户界面开始。这次,使用 dashboardPage、
dashboardSidebar 和 dashboardBody 这 3 个函数。在仪表板中,我们想要显示扩展
包的下载动态,以及每月和每周下载量最多的最受欢迎的扩展包。
我们把月度和周度的菜单放到侧栏中,这样用户可以选择需要查看的数据。在每一个
标签页,把绘图和表格放在一起。在这个例子中,我们用 formattable 为下载列添加颜
色条,使数据更具可比性且更加直观。
library(shiny)
library(shinydashboard)
library(formattable)
library(cranlogs)
ui <- dashboardPage(
dashboardHeader(title = "CRAN Downloads"),
dashboardSidebar(sidebarMenu(
menuItem("Last week",
tabName = "last_week", icon = icon("list")),
menuItem("Last month",
tabName = "last_month", icon = icon("list"))
)),
dashboardBody(tabItems(
tabItem(tabName = "last_week",
fluidRow(tabBox(title = "Total downloads",
tabPanel("Total", formattableOutput("last_week_table"))),
tabBox(title = "Top downloads",
tabPanel("Top", formattableOutput("last_week_top_table"))))),
tabItem(tabName = "last_month",
fluidRow(tabBox(title = "Total downloads",
tabPanel("Total", plotOutput("last_month_barplot"))),
tabBox(title = "Top downloads",
tabPanel("Top", formattableOutput("last_month_top_table")))))
))
)
注意到,plotOutput( ) 是 shiny 包中的函数,而 formattableOutput( ) 函数则
是由 formattable 包提供的。事实上,开发人员可以创建各种类型的 HTML 小工具,只要扩
展包恰当地定义了 render* 函数和 *Output 函数来生成正确的 HTML 代码,我们就可
以把这些小工具嵌入 shiny 应用程序中。
接下来,我们定义服务器逻辑。因为输出结果完全依赖于数据源,在调用函数
formattable( )和 plot( )之前要先下载数据。
server <- function(input, output) {
output$last_week_table <- renderFormattable({
data <- cran_ _downloads(when = "last-week")
formattable(data, list(count = color_ _bar("lightblue")))
})
output$last_week_top_table <- renderFormattable({
data <- cran_ _top_ _downloads("last-week")
formattable(data, list(count = color_ _bar("lightblue"),
package = formatter("span",
style = "font-family: monospace;")))
})
output$last_month_barplot <- renderPlot({
data <- subset(cran_ _downloads(when = "last-month"),
count > 0)
with(data, barplot(count, names.arg = date),
main = "Last month downloads")
})
output$last_month_top_table <- renderFormattable({
data <- cran_ _top_ _downloads("last-month")
formattable(data, list(count = color_ _bar("lightblue"),
package = formatter("span",
style = "font-family: monospace;")))
})
}
事实上,如果数据持续更新,我们就可以创建一个动态的仪表板,其中的表格和图表
会定期更新。使用 reactiveTimer 和 reactive 是实现这项功能的关键。要了解更多信息,请
查阅相关帮助文档。
用户界面和服务器逻辑都准备好之后,就可以运行应用程序了:
runApp(shinyApp(ui, server))
默认情况下,shiny 应用程序会显示第一次访问时的第一页。图 15-19 是 Last week 标
签页面的屏幕截图,其中包括两个 formattable 数据框的选项卡。

图 15-19
图 15-20 则是 Last month 标签页面的屏幕截图,其中包括一个直方图和一个 formattable
数据框。

图 15-20
使用 shinydashboard的更多相关文章
- shinydashboard包---为shiny提供BI框架
1.安装 install.packages("shinydashboard") 2.基础知识 仪表盘有三个部分:标题.侧边栏,身体.下面是最最小的仪表面板页面的UI: ## ui. ...
- Building [Security] Dashboards w/R & Shiny + shinydashboard(转)
Jay & I cover dashboards in Chapter 10 of Data-Driven Security (the book) but have barely mentio ...
- R shinydashboard——3.外观
目录 1.皮肤 2.注销面板 3.CSS 4. 标题延长 5.侧边栏宽度 6.图标 7.状态和颜色 1.皮肤 shinydashboard有很多颜色主题和外观的设置.默认为蓝色,可指定黑丝.紫色.绿色 ...
- R shinydashboard ——2. 结构
目录 1.Shiny和HTML 2.结构 3. 标题Header 4. 侧边栏Siderbar 5.主体/正文Body box tabBox infoBox valueBox Layouts 1.Sh ...
- R shinydashboard ——1. 基本用法
shiny和shinydashboard使用虽然简单,但控件众多,需及时总结归纳. install.packages("shinydashboard") shinydashboar ...
- R语言包翻译——翻译
Shiny-cheatsheet ...
- R语言包翻译
Shiny-cheatsheet 作者:周彦通 1.安装 install.packages("shinydashboard") 2.基础知识 仪表盘有三个部分:标题.侧边栏,身体 ...
- R 包
[下面列出每个步骤最有用的一些R包] .数据导入 以下R包主要用于数据导入和保存数据: feather:一种快速,轻量级的文件格式:在R和python上都可使用 readr:实现表格数据的快速导入 r ...
- R语言中常用包(二)
数据导入 以下R包主要用于数据导入和保存数据 feather:一种快速,轻量级的文件格式.在R和python上都可使用readr:实现表格数据的快速导入.中文介绍可参考这里readxl:读取Micro ...
随机推荐
- java如何使用base64生成图片文件
import org.apache.commons.codec.binary.Base64; public static void decodeFile(String base64Str,File f ...
- 2-sat+二分搜索hdu(3622)
hdu3622 Bomb Game Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- chorme快捷键
Chrome窗口和标签页快捷键:Ctrl+N 打开新窗口 Ctrl+T 打开新标签页 Ctrl+Shift+N 在隐身模式下打开新窗口 Ctrl+O,然后选择文件 在谷歌浏览器中打开计算机上的文件 按 ...
- Prometheus 操作符
操作符 二元操作符 Prometheus的查询语言支持基本的逻辑运算和算术运算.对于两个瞬时向量, 匹配行为可以被改变. 算术二元运算符 在Prometheus系统中支持下面的二元算术操作符: + 加 ...
- Oracle等待事件之log file parallel write
log file parallel write表示等待 LGWR 向操作系统请求 I/O 开始直到完成 I/O.这种事件发生通常表示日志文件发生了I/O 竞争或者文件所在的驱动器较慢.这说明这种等待与 ...
- talib 中文文档(九):Volume Indicators 成交量指标
Volume Indicators 成交量指标 AD - Chaikin A/D Line 量价指标 函数名:AD 名称:Chaikin A/D Line 累积/派发线(Accumulation/Di ...
- 【Python+Selenium】猪猪练习成功版:csv文件的输入和输出(运行环境:python3.5版本)
自己实践成功的从csv文件中读取用户名密码并实际登录系统后判断是否登录成功,并将已经运行的用户名密码及运行结果输出到一个新的csv文件中~ # coding=utf-8 from selenium i ...
- mysql 数据操作 单表查询 group by group_concat() 函数
# group_concat() 和concat() 一样拼接字符串 用在分组里 需求:查看每个职位都有哪些员工名字 把所有员工成员的名字都列出来 把每个职位里的员工姓名列出来 mysql> s ...
- 3.12 Templates -- Wrting Helpers(编写辅助器)
一.概述 1. Helpers允许你向你的模板添加超出在Ember中开箱即用的额外的功能.辅助器是最有用的,用于将来自模型和组件的原始值转换成更适合于用户的格式. 2. 例如,假设我们有一个Invoi ...
- Scrapy:学习笔记(2)——Scrapy项目
Scrapy:学习笔记(2)——Scrapy项目 1.创建项目 创建一个Scrapy项目,并将其命名为“demo” scrapy startproject demo cd demo 稍等片刻后,Scr ...