R文档沟通|Dashboards入门(3)

简介: 前面推了两期有关dashboards的推文,可见:R文档沟通|Dashboards入门(1);R文档沟通|Dashboards入门(2)

组件


前面推了两期有关dashboards的推文,可见:R文档沟通|Dashboards入门(1)R文档沟通|Dashboards入门(2)

这期简介下dashboards中的各种各样的组件,包括:

  1. 基于 HTML 小部件的交互式 JavaScript 数据可视化图形。
  2. R 图形,包括基础、栅栏和网格图形;
  3. 表格(可选选项包括:排序,过滤和分页等);
  4. 数值框(展示重要数据);
  5. 仪表盘;
  6. 文本注释;
  7. 导航栏(提供与仪表盘相关的更多链接)。

:无论输出格式如何,前三个组件在大多数 R Markdown 文档中均可使用。而后四个组件是仪表盘特有的,本节我们主要介绍后四个组件。


数值框


如果你希望在仪表盘中包含一个或多个数值,那么你可以使用 flexdashboard 包中的 valueBox() 函数来实现这个需求。下面给出一个简单的例子:

---
title: "Dashboard Value Boxes"
output:
  flexdashboard::flex_dashboard:
    orientation: rows
---
```{r setup, include=FALSE}
library(flexdashboard)
# these computing functions are only toy examples
computeArticles = function(...) return(45)
computeComments = function(...) return(126)
computeSpam = function(...) return(15)
```
### Articles per Day
```{r}
articles = computeArticles()
valueBox(articles, icon = "fa-pencil")
```
### Comments per Day
```{r}
comments = computeComments()
valueBox(comments, icon = "fa-comments")
```
### Spam per Day
```{r}
spam = computeSpam()
valueBox(
  spam, icon = "fa-trash",
  color = ifelse(spam > 10, "warning", "primary")
)
```

$E1]DM~7DQJALSEVW4YIX14.pngimage.gif

上图展示了三个并排的仪表,每个仪表都显示了一个数值和标题。这里我们重点解释下第三个代码块(### Spam per Day)。这里的valueBox() 函数定义了一个值(spam)和一个图标(icon = "fa-trash")。并使用 color 设置参数框的颜色。内部使用了一个ifelse()语句,使得不同值表示不同的颜色。当然,可用的颜色还包括:"info", "success""danger"(默认值为:"primary")。你也可以指定任何有效的 CSS 颜色(例如:"#ffffff""rgb(100, 100, 100)"等)。


仪表


仪表:在指定数值范围内显示仪表上的数值。例如,下面展示了三个仪表并排的结果(见下图)

---
title: "Dashboard Gauges"
output:
  flexdashboard::flex_dashboard:
    orientation: rows
---
```{r setup, include=FALSE}
library(flexdashboard)
```
### Contact Rate
```{r}
gauge(91, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(80, 100), warning = c(40, 79), danger = c(0, 39)
))
```
### Average Rating 
```{r}
gauge(37.4, min = 0, max = 50, gaugeSectors(
  success = c(41, 50), warning = c(21, 40), danger = c(0, 20)
))
```
### Cancellations
```{r}
gauge(7, min = 0, max = 10, gaugeSectors(
  success = c(0, 2), warning = c(3, 6), danger = c(7, 10)
))
```

结果如下所示:

image.gif

这个示例需要解释以下几点:

  1. 通过gauge() 函数设置一个仪表盘。其内部三个参数需要确定:valueminmax (可以是任何数值)。
  2. 可以指定一个可选的符号(symbol)和值一起显示(在示例中, "%" 用来表示百分比)。
  3. 可以使用 gaugeSectors() 函数指定一组自定义的颜色扇区,默认颜色为绿色。扇区选项(sectors)可以指定三个值的范围(success, warningdanger) 使得仪表盘的颜色根据它的值变化而变化。


文本注释


你可以通过以下方式在仪表盘中包含额外的叙述说明:

  1. 在页面顶部加入相应文本内容。
  2. 定义不包含图表,而是仅包含任意内容(文本、图像和方程等)的指示板。

如图@ref(fig:dashboard-text) 所示,顶部包含了一些内容说明和右下角包含了一个只有内容的指示板:

---
title: "Text Annotations"
output:
  flexdashboard::flex_dashboard:
    orientation: rows
---
Monthly deaths from bronchitis, emphysema and asthma in the
UK, 1974–1979 (Source: P. J. Diggle, 1990, Time Series: A
Biostatistical Introduction. Oxford, table A.3)
```{r setup, include=FALSE}
library(dygraphs)
```
Row {data-height=600}
-------------------------------------
### All Lung Deaths
```{r}
dygraph(ldeaths)
```
Row {data-height=400}
-------------------------------------
### Male Deaths
```{r}
dygraph(mdeaths)
```
> Monthly deaths from lung disease in the UK, 1974–1979
### About dygraphs
This example makes use of the dygraphs R package. The dygraphs
package provides rich facilities for charting time-series data 
in R. You can use dygraphs at the R console, within R Markdown
documents, and within Shiny applications.

结果如下所示:

NK`M]U~02L6RZXXZT}G~D@J.png

:仪表盘中的每个组件都可以包括标题和注释部分。三级结构 (###) 后面的文本为标题;> 开头的文本是注释。


导航栏


默认情况下,仪表盘的导航栏包括:标题(title)、作者(author)和日期(date)。当仪表盘有多个页面时(第@ref(multiple-pages)节),导航条左侧还包含指向各个页面的链接。当然,你也在可以仪表盘上添加社交链接。

除此之外,使用 navbar 选项可以在导航栏中添加自定义链接。例如,在导航栏中添加 "About" 链接:

---
title: "Navigation Bar"
output:
  flexdashboard::flex_dashboard:
    navbar:
      - { title: "About", href: "https://example.com/about" }
---

这时得到的界面如下所示:

6JLR@LZ4F}E~LZS5PPHYUXL.png

:导航栏必须包括标题或图标(或两者都包含)。你还可以使用 href 作为导航目标。如果想调整文本对齐方式,可以使用 align 参数 (默认情况下为右对齐)。

除此之外,你可以通过 social 选项添加社交链接。例如,下面的仪表盘包括了 Twitter 和 Facebook 链接,以及一个包含更多服务的下拉菜单:

---
title: "Social Links"
output:
  flexdashboard::flex_dashboard:
    social: [ "twitter", "facebook", "menu" ]
---

这时得到的界面如下所示:

5P8Q%`KI6FIY4]W47Y@9}%F.png

社交链接选项还包括:"facebook", "twitter", "google-plus", "linkedin""pinterest"

目录
相关文章
|
5月前
|
前端开发 JavaScript NoSQL
假如你是一名专业的程序员,你将如何最快开发一个在线网站,并给出相应的代码及部署文档
假如你是一名专业的程序员,你将如何最快开发一个在线网站,并给出相应的代码及部署文档
25 0
|
9月前
|
关系型数据库 MySQL 数据库
MinDoc:针对IT团队的文档、笔记系统
作为一名IT从业者,无论是在公司团队中,还是在平时自己写一些笔记、博客等文档,我都习惯使用markdown来进行书写。在使用过许多支持markdown语法的系统或软件(如Typora、未知、我来、思源、觅道等)后,我总觉得它们不能满足我的需求。直到我发现了MinDoc这款针对IT团队开发的简单好用的开源文档管理系统。我们下面将介绍一下这个项目及如何使用docker-compose 快速部署。
175 1
MinDoc:针对IT团队的文档、笔记系统
|
10月前
|
安全 测试技术 API
产品经理必学技术接口文档知识,提高工作效率
产品经理和开发人员之间的高效沟通和协作是项目成功的关键因素之一。在产品开发的不同阶段,产品经理需要了解开发工作的进度与掌握需求变化,以确保团队在同一方向上协作,以最大化项目的成功。
产品经理必学技术接口文档知识,提高工作效率
|
前端开发
「前端经验总结」大型业务项目中,前端如何撰写设计文档
设计文档可以帮助开发梳理业务功能,呈现优质的开发思维的载体。另外,当开发思路逐渐丰富,开发速度也就提上来了。所以本篇分享笔者前端的开发中尤其是大型业务项目,是如何撰写设计文档的。
1100 1
|
11月前
|
设计模式 机器学习/深度学习 算法
软件开发人员必须阅读的20本书(二)
软件开发人员必须阅读的20本书(二)
110 0
|
11月前
|
设计模式 Rust 架构师
软件开发人员必须阅读的20本书(一)
软件开发人员必须阅读的20本书(一)
83 1
|
存储 Java 程序员
如何写好技术文档——来自Google十多年的文档经验
如何写好技术文档——来自Google十多年的文档经验
451 2
如何写好技术文档——来自Google十多年的文档经验
|
JavaScript 搜索推荐 前端开发
软件工程师文档写作最佳实践
软件工程师文档写作最佳实践
141 1
软件工程师文档写作最佳实践
|
数据可视化
R文档沟通|Dashboards入门(1)
在本章中,我们将介绍基于 flexdashboard[1] 包的仪表盘。 仪表盘在业务风格的报告中特别常见。它们可以用来突出报告的概要和关键内容。仪表盘的布局通常是基于网格搭建的,各个组件排列在各种大小的“盒子”中。
121 0
R文档沟通|Dashboards入门(1)