forked from geocompx/geocompr
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.Rmd
185 lines (132 loc) · 7.42 KB
/
README.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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
---
output: github_document
---
<!-- README.md is generated from README.Rmd. Please edit that file - rmarkdown::render('README.Rmd', output_format = 'github_document', output_file = 'README.md') -->
```{r readme-setup, echo = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "figures/"
)
is_online = curl::has_internet()
```
# Geocomputation with R
[![Build Status](https://travis-ci.org/Robinlovelace/geocompr.svg?branch=master)](https://travis-ci.org/Robinlovelace/geocompr) [![](https://img.shields.io/docker/automated/robinlovelace/geocompr.svg)](https://hub.docker.com/r/robinlovelace/geocompr/builds/)
# Introduction
This repository hosts the code underlying Geocomputation with R, a book by [Robin Lovelace](https://www.robinlovelace.net/), [Jakub Nowosad](https://nowosad.github.io/), and [Jannes Muenchow](http://www.geographie.uni-jena.de/en/Muenchow.html).
The online version of the book is developed at https://geocompr.robinlovelace.net/.
We plan to publish the hard copy of the book with CRC Press in 2018.
## Contributing
We encourage contributions on any part of the book, including:
- Improvements to the text, e.g. clarifying unclear sentences, fixing typos (see guidance from [Yihui Xie](https://yihui.name/en/2013/06/fix-typo-in-documentation/)).
- Changes to the code, e.g. to do things in a more efficient way.
- Suggestions on content (see the project's [issue tracker](https://github.com/Robinlovelace/geocompr/issues) and the [work-in-progress](https://github.com/Robinlovelace/geocompr/tree/master/work-in-progress) folder for chapters in the pipeline).
Please see [our-style.md](https://github.com/Robinlovelace/geocompr/blob/master/our-style.md) for the book's style.
```{r, include=FALSE}
contributors = source("code/list-contributors.R")[[1]]
# save for future reference:
readr::write_csv(contributors, "extdata/contributors.csv")
# table view:
# knitr::kable(contributors, caption = "Contributors to Geocomputation with R")
# text view
c_txt = contributors$name
c_url = contributors$link
c_rmd = paste0("[", c_txt, "](", c_url, ")")
contributors_text = paste0(c_rmd, collapse = ", ")
```
Many thanks to all contributors to the book so far via GitHub (this list will update automatically): `r contributors_text`.
During the project we aim to contribute 'upstream' to the packages that make geocomputation with R possible.
This impact is recorded in [`our-impact.csv`](https://github.com/Robinlovelace/geocompr/blob/master/our-impact.csv).
## Reproducing the book
To ease reproducibility, this book is also a package. Installing it from GitHub will ensure all dependencies
to build the book are available on your computer (you need [**devtools**](https://github.com/hadley/devtools)):
```{r, eval=FALSE, message=FALSE}
devtools::install_github("robinlovelace/geocompr")
```
You need a recent version of the GDAL, GEOS, Proj.4 and UDUNITS libraries installed for this to work on Mac and Linux. See the **sf** package's [README](https://github.com/edzer/sfr) for information on that.
Once the dependencies have been installed you should be able to build and view a local version the book with:
```{r, eval=FALSE}
bookdown::render_book("index.Rmd") # to build the book
browseURL("_book/index.html") # to view it
```
The code associated with each chapter is saved in the `code/chapters/` folder.
`source("code/chapters/07-transport.R")` runs run the code chunks in chapter 7, for example.
These R scripts are generated with the follow command which wraps `knitr::purl()`:
```{r gen-code, results='hide'}
# geocompr:::generate_chapter_code()
```
## Reproducing this README
To reduce the book's dependencies, scripts to be run infrequently to generate input for the book are run on creation of this README.
The additional packages required for this can be installed as follows:
```{r extra-pkgs, message=FALSE}
source("code/extra-pkgs.R")
```
With these additional dependencies installed, you should be able to run the following scripts, which create content for the book, that we've removed from the main book build to reduce package dependencies and the book's build time:
```{r source-readme, message=FALSE, warning=FALSE, fig.show='hide'}
source("code/cranlogs.R")
source("code/sf-revdep.R")
# source("code/09-usboundaries.R") # not working for some reason
source("code/09-urban-animation.R")
source("code/09-map-pkgs.R")
```
Note: the `.Rproj` file is configured to build a website not a single page.
To reproduce this [README](https://github.com/Robinlovelace/geocompr/blob/master/README.Rmd) use the following command:
```{r render-book, eval=FALSE}
rmarkdown::render("README.Rmd", output_format = "github_document", output_file = "README.md")
```
## Book statistics
An indication of the book's progress over time is illustrated below (to be updated roughly every week as the book progresses).
```{r gen-stats, echo=FALSE, message=FALSE, warning=FALSE}
source("R/generate-chapter-code.R")
book_stats = readr::read_csv("extdata/word-count-time.csv",
col_types=('iiDd'))
# to prevent excessive chapter count
if(Sys.Date() > max(book_stats$date) + 5) {
book_stats_new = generate_book_stats()
book_stats = bind_rows(book_stats, book_stats_new)
readr::write_csv(book_stats, "extdata/word-count-time.csv")
}
book_stats = dplyr::filter(book_stats, chapter <= 13)
library(ggplot2)
book_stats$chapter = formatC(book_stats$chapter, width = 2, format = "d", flag = "0")
book_stats$chapter = fct_rev(as.factor(book_stats$chapter))
book_stats$n_pages = book_stats$n_words / 300
```
```{r bookstats, warning=FALSE, echo=FALSE, fig.width=8, fig.height=4}
ggplot(book_stats) +
geom_area(aes(date, n_pages, fill = chapter), position = "stack") +
ylab("Estimated number of pages") +
xlab("Date") +
scale_x_date(date_breaks = "2 month",
limits = c(min(book_stats$date), as.Date("2018-08-01")),
date_labels = "%b %Y") +
coord_cartesian(ylim = c(0, 300))
```
Book statistics: estimated number of pages per chapter over time.
## Citations
To cite packages used in this book we use code from [Efficient R Programming](https://csgillespie.github.io/efficientR/):
```{r gen-cite, warning=FALSE}
geocompr:::generate_citations()
```
This generates .bib and .csv files containing the packages.
The current of packages used can be read-in as follows:
```{r pkg_df, message=FALSE}
pkg_df = readr::read_csv("extdata/package_list.csv")
```
Other citations are stored online using Zotero.
If you would like to add to the references, please use Zotero, join the [open group](https://www.zotero.org/groups/418217/energy-and-transport) add your citation to the open [geocompr library](https://www.zotero.org/groups/418217/energy-and-transport/items/collectionKey/9K6FRP6N).
We use the following citation key format:
```
[auth:lower]_[veryshorttitle:lower]_[year]
```
This can be set from inside Zotero desktop with the Better Bibtex plugin installed (see [github.com/retorquere/zotero-better-bibtex](https://github.com/retorquere/zotero-better-bibtex)) by selecting the following menu options (with the shortcut `Alt+E` followed by `N`), and as illustrated in the figure below:
```
Edit > Preferences > Better Bibtex
```
![](figures/zotero-settings.png)
We use Zotero because it is a powerful open source reference manager that integrates well with the **citr** package.
As described in the GitHub repo [Robinlovelace/rmarkdown-citr-demo](https://github.com/Robinlovelace/rmarkdown-citr-demo).
## References
```{r}
knitr::kable(pkg_df)
```