-
Notifications
You must be signed in to change notification settings - Fork 0
/
reproducible-dataviz-workflow.Rmd
122 lines (100 loc) · 3.78 KB
/
reproducible-dataviz-workflow.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
---
title: "Reproducible dataviz workflow"
output:
html_document:
toc: false
toc_float:
collapsed: false
includes:
before_body: [includes/include_header.html, includes/include_header_navpage.html]
editor_options:
chunk_output_type: console
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(
echo = FALSE,
message = FALSE,
warning = FALSE
)
library("emo")
```
<style>
ul {
list-style-type: none;
}
li {
position: relative;
&:before {
display: block;
position: absolute;
top: 0;
left: 0;
right: 20px;
content: " ";
font-size: .75em;
}
}
li:before { content: "✅ "; }
</style>
## Towards a reproducible dataviz workflow
Reproducible research requires full documentation and disclosure of all steps in your data collection, analysis and presentation. Creating reproducible data visualisations is no different. It should be possible for another researcher (or member of the public) to recreate your dataviz by following your workflow.
If a dataviz tool allows researchers to meet **all** of the following criteria, it passes the **OxShef: dataviz** reproducability standards and is marked as such in the [table of dataviz tools](https://tools.oxshef.io/list-of-tools.html#table-of-tools). We strive to provide [dedicated training, tutorials and templates](training-tutorials-and-templates) for all tools that meet these criteria.
<div class='row'>
<div class='col-sm-5'>
- Your research data is published in a DOI-issuing repository
- Your visualisation pulls data directly from the data repository
- Your scripts/steps to produce your visualisation are deposited in a DOI-issuing repository
- Your research data, publication, visualisation scripts all reference one another
- Your ORCID is included in all of these outputs.
</div>
<div class='col-sm-7'>
<center>
<img src='images/dois-and-viz-tool.png' style='max-width:500px' width='100%'></img>
</center>
</div>
</div>
To help you select tools and a workflow that meets these criteria, you might find the flowchart below useful:
```{r tool-selection-flowchart, echo = FALSE, fig.height=6}
library("tidyverse")
library("visNetwork")
nodes <- tribble(
~id, ~label, ~title, ~shape, ~size, ~color,
1, "Is your data public?", NA, "diamond", 25, "#97C2FC",
2, ji("white_check_mark"), NA, "dot", 5, "green",
3, ji("x"), NA, "dot", 5, "red",
4, "Reproducible dataviz require Open Data. \nLearn more at oxshef.io", "<a href='https://oxshef.io' target='_blank'>oxshef.io</a>", "square", 25, "#97C2FC",
5, "Does your dataset \nhave a DOI?", NA, "diamond", 25, "#97C2FC",
6, ji("x"), NA, "dot", 5, "red",
7, ji("white_check_mark"), NA, "dot", 5, "green",
8, "Visit repositories.oxshef.io \nto learn about DOI", "<a href='https://repositories.oxshef.io' target='_blank'>repositories.oxshef.io</a>", "square", 25, "red",
9, "Does your dataviz\n pull data from a data repository?", NA, "diamond", 25, "#97C2FC",
10, ji("white_check_mark"), NA, "dot", 5, "green",
11, ji("x"), NA, "dot", 5, "red",
12, "You have a reproducible \ndataviz workflow!", NA, "dot", 25, "green",
13, "Visit tools.oxshef.io \nto learn more", "<a href='https://tools.oxshef.io' target='_blank'>tools.oxshef.io</a>", "dot", 25, "red"
)
edges <- tribble(
~from, ~to,
1, 2,
1, 3,
3, 4,
2, 5,
5, 7,
5, 6,
6, 8,
7, 9,
9, 10,
9, 11,
10, 12,
11, 13
)
visNetwork(nodes, edges, width = "100%", height = "500px") %>%
visEdges(color = "#97C2FC") %>%
visNodes(font = list(size = 16)) %>%
visInteraction(dragNodes = FALSE, dragView = FALSE, selectable = FALSE) %>%
visHierarchicalLayout(direction = "LR",
levelSeparation = 180,
sortMethod = "directed",
blockShifting = FALSE,
edgeMinimization = FALSE)
```