Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hrbrmstr/statebins
Alternative to choropleths of US States ala http://bit.ly/statebins
https://github.com/hrbrmstr/statebins
cartogram choropleth choropleth-map data-visualization datavisualization r rstats statebins
Last synced: 10 days ago
JSON representation
Alternative to choropleths of US States ala http://bit.ly/statebins
- Host: GitHub
- URL: https://github.com/hrbrmstr/statebins
- Owner: hrbrmstr
- License: other
- Created: 2014-08-26T02:21:39.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2022-04-18T13:45:22.000Z (over 2 years ago)
- Last Synced: 2024-10-12T21:24:16.160Z (24 days ago)
- Topics: cartogram, choropleth, choropleth-map, data-visualization, datavisualization, r, rstats, statebins
- Language: R
- Homepage:
- Size: 7.52 MB
- Stars: 124
- Watchers: 10
- Forks: 27
- Open Issues: 10
-
Metadata Files:
- Readme: README.Rmd
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
---
output: rmarkdown::github_document
editor_options:
chunk_output_type: console
---```{r pkg-knitr-opts, include=FALSE}
hrbrpkghelpr::global_opts()
``````{r badges, results='asis', echo=FALSE, cache=FALSE}
hrbrpkghelpr::stinking_badges()
``````{r description, results='asis', echo=FALSE, cache=FALSE}
hrbrpkghelpr::yank_title_and_description()
```## What's Inside The Tin
The following functions are implemented/datasets included:
```{r ingredients, results='asis', echo=FALSE, cache=FALSE}
hrbrpkghelpr::describe_ingredients()
```
- `statebins`: (the original sole function in the package) Create a new ggplot-based "statebin" chart for USA states/territories## Installation
```{r install-ex, results='asis', echo=FALSE, cache=FALSE}
hrbrpkghelpr::install_block()
```## Usage
All of the following examples use the [WaPo data](http://www.washingtonpost.com/wp-srv/special/business/states-most-threatened-by-trade/states.csv?cache=1). It looks like the columns they use are scaled data and I didn't take the time to figure out what they did, so the final figure just mimics their output (including the non-annotated legend).
```{r setup}
library(statebins)
library(cdcfluview)
library(hrbrthemes)
library(tidyverse)# current verison
packageVersion("statebins")
```### The original wapo data
```{r original}
adat <- read_csv(system.file("extdata", "wapostates.csv", package="statebins"))mutate(
adat,
share = cut(avgshare94_00, breaks = 4, labels = c("0-1", "1-2", "2-3", "3-4"))
) %>%
statebins(
value_col = "share",
ggplot2_scale_function = scale_fill_brewer,
name = "Share of workforce with jobs lost or threatened by trade"
) +
labs(title = "1994-2000") +
theme_statebins()
```### Continuous scale, legend on top
```{r continuous}
statebins(
adat,
value_col = "avgshare01_07",
name = "Share of workforce with jobs lost or threatened by trade",
palette = "OrRd",
direction = 1
) +
labs(x="2001-2007") +
theme_statebins(legend_position="top")
```### Continuous scale, no legend
```{r continuous_noleg}
statebins(adat, value_col = "avgshare08_12", palette = "Purples") +
labs(x="2008-2010") +
theme_statebins(legend_position = "none")
```### Mortality data (has Puerto Rico)
```{r mort}
# from: http://www.cdc.gov/nchs/fastats/state-and-territorial-data.htmdat <- read_csv(system.file("extdata", "deaths.csv", package="statebins"))
statebins(dat, value_col = "death_rate", name="Per 100K pop") +
labs(title="Mortality Rate (2010)") +
theme_statebins()
```### Fertility data
```{r fert}
statebins(dat, value_col="fertility_rate", name="Per 100K pop", palette="PuBuGn") +
labs(title="Fertility Rate (2010)") +
theme_statebins()
```### Manual - perhaps good for elections?
```{r manual}
election_2012 <- suppressMessages(read_csv(system.file("extdata", "election2012.csv", package="statebins")))mutate(election_2012, value = ifelse(is.na(Obama), "Romney", "Obama")) %>%
statebins(
font_size=4, dark_label = "white", light_label = "white",
ggplot2_scale_function = scale_fill_manual,
name = "Winner",
values = c(Romney = "#2166ac", Obama = "#b2182b")
) +
theme_statebins()
```### Rounded rects!
You can pass in a `grid::units()` call for the `radius` parameter.
Slight curves:
```{r rounded}
data(USArrests)USArrests$state <- rownames(USArrests)
statebins(USArrests, value_col="Assault", name = "Assault", round=TRUE) +
theme_statebins(legend_position="right")
```Circles!
```{r rounded2}
statebins(USArrests, value_col="Assault", name = "Assault", round=TRUE,
radius=grid::unit(16, "pt"), palette="Reds", direction=1) +
theme_statebins(legend_position="right")
```### Geom
```{r sb_facet, fig.width=20, fig.height=15}
flu <- ili_weekly_activity_indicators(2017)ggplot(flu, aes(state=statename, fill=activity_level)) +
geom_statebins() +
coord_equal() +
viridis::scale_fill_viridis(
name = "ILI Activity Level ", limits=c(0,10), breaks=0:10, option = "magma", direction = -1
) +
facet_wrap(~weekend) +
labs(title="2017-18 Flu Season ILI Activity Level") +
theme_statebins(base_family = font_ps) +
theme(plot.title=element_text(size=16, hjust=0)) +
theme(plot.margin = margin(30,30,30,30))
```### All the "states"
`statebins` now has PR, VI & NYC (by name or abbreviation) so you can use them, too:
```{r all}
library(statebins)
library(tidyverse)
library(viridis)data(USArrests)
# make up some data for the example
rownames_to_column(USArrests, "state") %>%
bind_rows(
data_frame(
state = c("Virgin Islands", "Puerto Rico", "New York City"),
Murder = rep(mean(max(USArrests$Murder),3)),
Assault = rep(mean(max(USArrests$Assault),3)),
Rape = rep(mean(max(USArrests$Rape),3)),
UrbanPop = c(93, 95, 100)
)
) -> us_arrestsstatebins(us_arrests, value_col="Assault",
ggplot2_scale_function = viridis::scale_fill_viridis) +
labs(title="USArrests + made up data") +
theme_statebins("right")
```