visualizeR/README.Rmd
2022-12-24 18:20:33 -05:00

180 lines
5.9 KiB
Text

---
output: github_document
---
<!-- README.md is generated from README.Rmd. Please edit that file -->
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%",
warning = FALSE,
message = FALSE,
dpi = 300,
dev.args = list(type = "cairo")
)
desc = read.dcf('DESCRIPTION')
desc = setNames(as.list(desc), colnames(desc))
```
# `r desc$Package` <img src="man/figures/logo.png" align="right" alt="" width="120"/>
> `r desc$Title`
`visualizeR` proposes some utils to get REACH and AGORA colors, ready-to-go color palettes, and a few visualization functions (horizontal hist graph for instance).
## Installation
You can install the last version of visualizeR from
[GitHub](https://github.com/) with:
```{r, eval = FALSE}
# install.packages("devtools")
devtools::install_github("gnoblet/visualizeR", build_vignettes = TRUE)
```
## Roadmap
Roadmap is as follows:
- [X] Add IMPACT's colors
- [X] Add all color palettes from the internal documentation
- [ ] There remains to be added more-than-7-color palettes and black color palettes
- [ ] Add new types of visualization (e.g. dumbbell plot)
- [ ] Use examples
- [ ] Add some ease-map functions
- [ ] Add some interactive functions (maps and graphs)
## Request
Please, do not hesitate to pull request any new viz or colors or color palettes, or to email request any change (guillaume.noblet@reach-initiative.org or gnoblet@zaclys.net).
## Colors
Color palettes for REACH, AGORA and IMPACT are available. Functions to access colors and palettes are `cols_initiative()` or `pal_initiative()`. For now, the initiative with the most colors and color palettes is REACH. Feel free to pull requests new AGORA and IMPACT colors.
```{r example-colors, eval = TRUE}
library(visualizeR)
# Get all saved REACH colors, named
cols_reach(unnamed = F)[1:10]
# Extract a color palette as hexadecimal codes and reversed
pal_reach(palette = "main", reversed = TRUE, color_ramp_palette = FALSE)
# Get all color palettes names
pal_reach(show_palettes = T)
```
## Charts
### Example 1: Bar chart, already REACH themed
```{r example-bar-chart, eval = TRUE}
library(visualizeR)
library(palmerpenguins)
library(dplyr)
df <- penguins |>
group_by(island, species) |>
summarize(
mean_bl = mean(bill_length_mm, na.rm = T),
mean_fl = mean(flipper_length_mm, na.rm = T)) |>
ungroup()
# Simple bar chart by group with some alpha transparency
bar(df, island, mean_bl, species, percent = FALSE, alpha = 0.6, x_title = "Mean of bill length")
# Using another color palette through `theme_reach()` and changing scale to percent
bar(df, island,mean_bl, species, percent = TRUE, theme = theme_reach(palette = "artichoke_3"))
# Not flipped, with text added, group_title, no y-axis and no bold for legend
bar(df, island, mean_bl, species, group_title = "Species", flip = FALSE, add_text = TRUE, add_text_suffix = "%", percent = FALSE, theme = theme_reach(text_font_face = "plain", axis_y = FALSE))
```
### Example 2: Point chart, already REACH themed
At this stage, `point_reach()` only supports categorical grouping colors with the `group` arg.
```{r example-point-chart, eval = TRUE}
# Simple point chart
point(penguins, bill_length_mm, flipper_length_mm)
# Point chart with grouping colors, greater dot size, some transparency, reversed color palette
point(penguins, bill_length_mm, flipper_length_mm, island, alpha = 0.6, size = 3, theme = theme_reach(reverse = TRUE))
# Using another color palettes
point(penguins, bill_length_mm, flipper_length_mm, island, size = 1.5, x_title = "Bill", y_title = "Flipper", title = "Length (mm)", theme = theme_reach(palette = "artichoke_3", text_font_face = , grid_x = T, title_position_to_plot = FALSE))
```
### Example 3! Dumbbell plot, REACH themed
Remember to ensure that your data are in the long format and you only have two groups on the x-axis; for instance, IDP and returnee and no NA values.
```{r example-dumbbell-plot, eval = TRUE}
# Prepare long data
df <- tibble::tibble(
admin1 = rep(c("A", "B", "C", "D", "E", "F", "G", "H"), 2),
setting = c(rep(c("Rural", "Urban"), 4), rep(c("Urban", "Rural"), 4)),
stat = rnorm(16, mean = 50, sd = 18)
) |>
dplyr::mutate(stat = round(stat, 0))
# Example
dumbbell(df,
stat,
setting,
admin1,
title = "% of HHs that reported open defecation as sanitation facility",
group_y_title = "Admin 1",
theme = theme_reach(legend_position = "bottom",
legend_direction = "horizontal",
palette = "primary",
title_position_to_plot = FALSE))
```
## Maps
```{r example-map}
# Add indicator layer
# - based on "pretty" classes and title "Proportion (%)"
# - buffer to add a 10% around the bounding box
map <- add_indicator_layer(
indicator_admin1,
opn_dfc,
buffer = 0.1) +
# Layout - some defaults - add the map title
add_layout("% of HH that reported open defecation as sanitation facility") +
# Admin boundaries as list of shape files (lines) and colors, line widths and labels as vectors
add_admin_boundaries(
lines = list(line_admin1, border_admin0, frontier_admin0),
colors = cols_reach("main_lt_grey", "dk_grey", "black"),
lwds = c(0.5, 2, 3),
labels = c("Department", "Country", "Dominican Rep. frontier"),
title = "Administrative boundaries") +
# Add text labels - centered on admin 1 centroids
add_admin_labels(centroid_admin1, ADM1_FR_UPPER) +
# Add a compass
add_compass() +
# Add a scale bar
add_scale_bar() +
# Add credits
add_credits("Admin. boundaries. : CNIGS \nCoord. system: GCS WGS 1984")
```
```{r map-save, eval = TRUE, include = FALSE, echo = TRUE}
tmap::tmap_save(map,
"man/figures/README-example-map.png",
height = 4.5,
width = 6
)
```
![Once exported with `tmap::tmap_save()`.](man/figures/README-example-map.png)