-
Notifications
You must be signed in to change notification settings - Fork 301
/
flexdashboard.Rmd
139 lines (95 loc) · 5.25 KB
/
flexdashboard.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
---
title: "Dashboard basics"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{dashboard-basics}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
resource_files:
- snippets
---
## Components
You can use flexdashboard to publish groups of related data visualizations as a dashboard. A flexdashboard can either be static (a standard web page) or dynamic (a [Shiny](https://shiny.rstudio.com) interactive document). A wide variety of components can be included in flexdashboard layouts, including:
1. Interactive JavaScript data visualizations based on [htmlwidgets](https://www.htmlwidgets.org).
2. R graphical output including base, lattice, and grid graphics.
3. Tabular data (with optional sorting, filtering, and paging).
4. Value boxes for highlighting important summary data.
5. Gauges for displaying values on a meter within a specified range.
6. Text annotations of various kinds.
See the [dashboard components](using.html#components) documentation for additional details on the use of each component type.
## Layout
### Single Column (Fill)
Dashboards are divided into columns and rows, with output components delineated using level 3 markdown headers (`###`). By default, dashboards are laid out within a single column, with charts stacked vertically within a column and sized to fill available browser height. For example, this layout defines a single column with two charts that fills available browser space:
<div class="row">
<div class="col-md-5">
<div id="singlecolumn"></div>
<script type="text/javascript">loadSnippet('singlecolumn')</script>
</div>
<div class="col-md-7">
<div height="420px" width="100%">
<img class="holder" data-src="holder.js/100px210?size=28&text=Chart 1">
<img class="holder" data-src="holder.js/100px210?size=28&text=Chart 2">
</div>
</div>
</div>
### Single Column (Scroll)
Depending on the nature of your dashboard (number of components, ideal height of components, etc.) you may prefer a scrolling layout where components occupy their natural height and the browser scrolls when additional vertical space is needed. You can specify this behavior via the `vertical_layout: scroll` option. For example, here is the definition of a single column scrolling layout with three charts:
<div class="row">
<div class="col-md-5">
<div id="singlecolumnscroll"></div>
<script type="text/javascript">loadSnippet('singlecolumnscroll')</script>
</div>
<div class="col-md-7">
<div height="470px" width="100%">
<img class="holder" data-src="holder.js/100px157?size=28&text=Chart 1">
<img class="holder" data-src="holder.js/100px157?size=28&text=Chart 2">
<img class="holder" data-src="holder.js/100px157?size=28&text=Chart 3">
</div>
</div>
</div>
### Multiple Columns
To lay out charts using multiple columns you introduce a level 2 markdown header (`--------------`) for each column. For example, this dashboard displays 3 charts split across two columns:
<div class="row">
<div class="col-md-5">
<div id="multiplecolumns"></div>
<script type="text/javascript">loadSnippet('multiplecolumns')</script>
</div>
<div class="col-md-7">
<div height="470px" width="100%">
<div style="float: left; width: 60%;">
<img class="holder" data-src="holder.js/100px470?size=28&text=Chart 1">
</div>
<div style="margin-left: 60%;">
<img class="holder" data-src="holder.js/100px235?size=28&text=Chart 2">
<img class="holder" data-src="holder.js/100px235?size=28&text=Chart 3">
</div>
</div>
</div>
</div>
In this example we've moved Chart 1 into its own column which it will fill entirely. We've also given the column a larger size via the `data-width` attribute to provide additional emphasis to Chart 1.
### Row Orientation
You can also choose to orient dashboards row-wise rather than column-wise by specifying the `orientation: rows` option. For example, this layout defines two rows, the first of which has a single chart and the second of which has two charts:
<div class="row">
<div class="col-md-5">
<div id="roworientation-home"></div>
<script type="text/javascript">loadSnippet('roworientation-home')</script>
</div>
<div class="col-md-7">
<div height="496px" width="100%">
<img class="holder" data-src="holder.js/100px250?size=28&text=Chart 1">
<div>
<div style="float: left; width: 50%;">
<img class="holder" data-src="holder.js/100px250?size=28&text=Chart 2">
</div>
<div style="margin-left: 50%;">
<img class="holder" data-src="holder.js/100px250?size=28&text=Chart 3">
</div>
</div>
</div>
</div>
</div>
## Learning More
+ The [Using](using.html) page includes documentation on all of the features and options of flexdashboard, including layout orientations (row vs. column based), chart sizing, the various supported components, theming, and creating dashboards with multiple pages.
+ The [Shiny](shiny.html) page describes how to create dashboards that enable viewers to change underlying parameters and see the results immediately, or that update themselves incrementally as their underlying data changes.
+ The [Layouts](layouts.html) page includes a variety of sample layouts which you can use as a starting point for your own dashboards.
+ The [Examples](examples.html) page includes several examples of flexdashboard in action (including links to source code if you want to dig into how each example was created).