Browse Source

1.2.2 CRAN

master
hrbrmstr 8 years ago
parent
commit
51631c5e0b
No known key found for this signature in database GPG Key ID: 1D7529BE14E2BBA9
  1. 3
      .Rbuildignore
  2. 9
      DESCRIPTION
  3. 2
      LICENSE
  4. 39
      NAMESPACE
  5. 12
      R/statebins-package.R
  6. 79
      R/statebins.R
  7. 7
      README.Rmd
  8. 284
      README.html
  9. 144
      README.md
  10. BIN
      README_files/figure-html/unnamed-chunk-3-1.png
  11. BIN
      README_files/figure-markdown_github/unnamed-chunk-3-1.png
  12. 29
      cran-comments.md
  13. 2
      man/statebins-package.Rd
  14. 25
      man/statebins.Rd
  15. 24
      man/statebins_continuous.Rd
  16. 36
      man/statebins_manual.Rd

3
.Rbuildignore

@ -7,4 +7,5 @@
^.*README_files/.*$
^tmp$
^tmp/$
^tmp/.*$
^tmp/.*$
^cran-comments\.md$

9
DESCRIPTION

@ -1,9 +1,9 @@
Package: statebins
Type: Package
Title: statebins - U.S. State Cartogram Heatmaps in R; an alternative to
choropleth maps for USA States
Version: 1.2.1
Date: 2015-01-30
Title: U.S. State Cartogram Heatmaps in R; an Alternative to
Choropleth Maps for USA States
Version: 1.2.2
Date: 2015-12-21
Author: Bob Rudis (@hrbrmstr)
Maintainer: Bob Rudis <bob@rudis.net>
Description: statebins is an alternative to choropleth maps for USA States and
@ -25,3 +25,4 @@ Depends:
gridExtra,
scales,
RColorBrewer
RoxygenNote: 5.0.1

2
LICENSE

@ -1,2 +1,2 @@
YEAR: 2014
YEAR: 2015
COPYRIGHT HOLDER: Bob Rudis

39
NAMESPACE

@ -1,10 +1,41 @@
# Generated by roxygen2 (4.1.0): do not edit by hand
# Generated by roxygen2: do not edit by hand
export(statebins)
export(statebins_continuous)
export(statebins_manual)
import(RColorBrewer)
import(ggplot2)
import(grid)
import(gridExtra)
import(scales)
importFrom(ggplot2,aes)
importFrom(ggplot2,aes_string)
importFrom(ggplot2,coord_equal)
importFrom(ggplot2,element_blank)
importFrom(ggplot2,element_rect)
importFrom(ggplot2,element_text)
importFrom(ggplot2,geom_point)
importFrom(ggplot2,geom_text)
importFrom(ggplot2,geom_tile)
importFrom(ggplot2,ggplot)
importFrom(ggplot2,ggplotGrob)
importFrom(ggplot2,ggtitle)
importFrom(ggplot2,guide_legend)
importFrom(ggplot2,guides)
importFrom(ggplot2,labs)
importFrom(ggplot2,scale_color_manual)
importFrom(ggplot2,scale_fill_brewer)
importFrom(ggplot2,scale_fill_gradientn)
importFrom(ggplot2,scale_fill_manual)
importFrom(ggplot2,scale_x_continuous)
importFrom(ggplot2,scale_y_continuous)
importFrom(ggplot2,scale_y_reverse)
importFrom(ggplot2,theme)
importFrom(ggplot2,theme_bw)
importFrom(grid,arrow)
importFrom(grid,gpar)
importFrom(grid,grid.draw)
importFrom(grid,grid.newpage)
importFrom(grid,textGrob)
importFrom(grid,unit)
importFrom(grid,unit.c)
importFrom(grid,unit.pmax)
importFrom(grid,unit.pmin)
importFrom(scales,alpha)

12
R/statebins-package.R

@ -1,6 +1,16 @@
#' statebins is an alternative to choropleth maps for US States
#'
#' @name statebins-package
#' @docType package
#' @author Bob Rudis (@@hrbrmstr)
#' @import ggplot2 scales grid gridExtra RColorBrewer
#' @import gridExtra RColorBrewer
#' @importFrom scales alpha
#' @importFrom ggplot2 ggplot geom_tile scale_fill_manual guides geom_tile ggplotGrob
#' @importFrom ggplot2 geom_point geom_text scale_color_manual guides theme labs
#' @importFrom ggplot2 scale_x_continuous scale_y_continuous coord_equal theme_bw
#' @importFrom ggplot2 aes guide_legend element_rect element_blank element_text
#' @importFrom ggplot2 aes_string scale_y_reverse scale_fill_gradientn
#' @importFrom ggplot2 scale_fill_brewer ggtitle
#' @importFrom grid arrow unit grid.newpage grid.draw unit.c unit.pmax unit.pmin
#' @importFrom grid textGrob gpar
NULL

79
R/statebins.R

@ -44,38 +44,43 @@ invert <- function(hexColor, darkColor="black", lightColor="white") {
#'
#' \code{statebins()} creates "statebin" charts in the style of \url{http://bit.ly/statebins}
#'
#' This version uses discrete \link{RColorBrewer} scales, binned by the "breaks" parameter.
#' This version uses discrete \code{RColorBrewer} scales, binned by the "breaks" parameter.
#'
#' The function minimally expects the caller to pass in a data frame that:
#'
#' \itemize{
#' \item has one column of all state abbreviationis (all caps, including \code{DC} & \code{PR} or a column of state names (standard capitalization) named \code{state}
#' \item has one column of all state abbreviationis (all caps, including \code{DC} &
#' \code{PR} or a column of state names (standard capitalization) named \code{state}
#' \item has another column of values named \code{value}
#' }
#'
#' Doing so will create a "statebin" chart with 5 breaks and return a \link{ggplot2} object.
#' Doing so will create a "statebin" chart with 5 breaks and return a ggplot2 object.
#'
#' You can use a different column for the state names and values by changing \code{state_col}
#' and \code{value_col} accordingly.
#'
#' To add a title, change \code{plot_title} to anything but an empty atomic string vector (i.e. \code{""})
#' and set \code{title_position} to "\code{top}" or "\code{bottom}". Choosing "\code{bottom}"
#' will cause \code{statebins} to use \link{arrangeGrob} to position the title via \code{sub} and
#' will cause \code{statebins} to use \code{arrangeGrob} to position the title via \code{sub} and
#' return a frame grob instead of a ggplot2 object.
#'
#' @param state_data data frame of states and values to plot
#' @param state_col column name in \code{state_data} that has the states. no duplicates and can be names (e.g. "\code{Maine}") or abbreviatons (e.g. "\code{ME}")
#' @param state_col column name in \code{state_data} that has the states. no duplicates
#' and can be names (e.g. "\code{Maine}") or abbreviatons (e.g. "\code{ME}")
#' @param value_col column name in \code{state_data} that holds the values to be plotted
#' @param text_color default "\code{black}"
#' @param font_size font size (default = \code{3})
#' @param state_border_col default "\code{white}" - this creates the "spaces" between boxes
#' @param breaks a single number (greater than or equal to 2) giving the number of intervals into which data values are to be cut.
#' @param breaks a single number (greater than or equal to 2) giving the number of intervals
#' into which data values are to be cut.
#' @param labels labels for the levels \code{breaks}
#' @param legend_title title for the legend
#' @param legend_position "\code{none}", "\code{top}", "\code{left}", "\code{right}" or "\code{bottom}" (defaults to "\code{top}")
#' @param brewer_pal which named \link{RColorBrewer} palette to use (defaults to "PuBu")
#' @param legend_position "\code{none}", "\code{top}", "\code{left}", "\code{right}" or
#' "\code{bottom}" (defaults to "\code{top}")
#' @param brewer_pal which named \code{RColorBrewer} palette to use (defaults to "PuBu")
#' @param plot_title title for the plot
#' @param title_position where to put the title ("\code{bottom}" or "\code{top}" or "" for none); if "\code{bottom}", you get back a grob vs a ggplot object
#' @param title_position where to put the title ("\code{bottom}" or "\code{top}" or ""
#' for none); if "\code{bottom}", you get back a grob vs a ggplot object
#' @return ggplot2 object or grob
#' @export
#' @examples
@ -148,37 +153,41 @@ statebins <- function(state_data, state_col="state", value_col="value",
#'
#' \code{statebins()} creates "statebin" charts in the style of \url{http://bit.ly/statebins}
#'
#' This version uses a continuous scale based on \link{RColorBrewer} scales
#' (passing in a 6 element \code{RColorBrewer} palette to \link{scale_fill_gradientn}).
#' This version uses a continuous scale based on \code{RColorBrewer} scales
#' (passing in a 6 element \code{RColorBrewer} palette to \code{scale_fill_gradientn}).
#'
#' The function minimally expects the caller to pass in a data frame that:
#'
#' \itemize{
#' \item has one column of all state abbreviationis (all caps, including \code{DC} & \code{PR} ) or a column of state names (standard capitalization) named \code{state}
#' \item has one column of all state abbreviationis (all caps, including \code{DC} &
#' \code{PR} ) or a column of state names (standard capitalization) named \code{state}
#' \item has another column of values named \code{value}
#' }
#'
#' Doing so will create a "statebin" chart with 5 breaks and return a \link{ggplot2} object.
#' Doing so will create a "statebin" chart with 5 breaks and return a \code{ggplot2} object.
#'
#' You can use a different column for the state names and values by changing \code{state_col}
#' and \code{value_col} accordingly.
#'
#' To add a title, change \code{plot_title} to anything but an empty atomic string vector (i.e. \code{""})
#' and set \code{title_position} to "\code{top}" or "\code{bottom}". Choosing "\code{bottom}"
#' will cause \code{statebins} to use \link{arrangeGrob} to position the title via \code{sub} and
#' will cause \code{statebins} to use \code{arrangeGrob} to position the title via \code{sub} and
#' return a frame grob instead of a ggplot2 object.
#'
#' @param state_data data frame of states and values to plot
#' @param state_col column name in \code{state_data} that has the states. no duplicates and can be names (e.g. "\code{Maine}") or abbreviatons (e.g. "\code{ME}")
#' @param state_col column name in \code{state_data} that has the states. no duplicates
#' and can be names (e.g. "\code{Maine}") or abbreviatons (e.g. "\code{ME}")
#' @param value_col column name in \code{state_data} that holds the values to be plotted
#' @param text_color default "\code{black}"
#' @param font_size font size (default = \code{3})
#' @param state_border_col default "\code{white}" - this creates the "spaces" between boxes
#' @param legend_title title for the legend
#' @param legend_position "\code{none}", "\code{top}", "\code{left}", "\code{right}" or "\code{bottom}" (defaults to "\code{top}")
#' @param brewer_pal which named \link{RColorBrewer} palette to use (defaults to "PuBu")
#' @param legend_position "\code{none}", "\code{top}", "\code{left}", "\code{right}" or
#' "\code{bottom}" (defaults to "\code{top}")
#' @param brewer_pal which named \code{RColorBrewer} palette to use (defaults to "PuBu")
#' @param plot_title title for the plot
#' @param title_position where to put the title ("\code{bottom}" or "\code{top}" or "" for none); if "\code{bottom}", you get back a grob vs a ggplot object
#' @param title_position where to put the title ("\code{bottom}" or "\code{top}" or ""
#' for none); if "\code{bottom}", you get back a grob vs a ggplot object
#' @return ggplot2 object or grob
#' @export
#' @examples
@ -255,41 +264,53 @@ statebins_continuous <- function(state_data, state_col="state", value_col="value
#' The function minimally expects the caller to pass in a data frame that:
#'
#' \itemize{
#' \item has one column of all state abbreviationis (all caps, including \code{DC} & \code{PR} or a column of state names (standard capitalization) named \code{state}
#' \item has one column of all state abbreviationis (all caps, including \code{DC} &
#' \code{PR} or a column of state names (standard capitalization) named \code{state}
#' \item has another column of colors named \code{color}
#' }
#'
#' Doing so will create a "statebin" chart with the colors specified as a \link{ggplot2} object.
#' Doing so will create a "statebin" chart with the colors specified as a ggplot2 object.
#'
#' You can use a different column for the state names and colors by changing \code{state_col}
#' and \code{color_col} accordingly.
#'
#' To add a title, change \code{plot_title} to anything but an empty atomic string vector (i.e. \code{""})
#' and set \code{title_position} to "\code{top}" or "\code{bottom}". Choosing "\code{bottom}"
#' will cause \code{statebins} to use \link{arrangeGrob} to position the title via \code{sub} and
#' will cause \code{statebins} to use \code{arrangeGrob} to position the title via \code{sub} and
#' return a frame grob instead of a ggplot2 object.
#'
#' @param state_data data frame of states and values to plot
#' @param state_col column name in \code{state_data} that has the states. no duplicates and can be names (e.g. "\code{Maine}") or abbreviatons (e.g. "\code{ME}")
#' @param state_col column name in \code{state_data} that has the states. no duplicates
#' and can be names (e.g. "\code{Maine}") or abbreviatons (e.g. "\code{ME}")
#' @param color_col column name in \code{state_data} that holds the colors to be used
#' @param text_color default "\code{black}"
#' @param font_size font size (default = \code{3})
#' @param state_border_col default "\code{white}" - this creates the "spaces" between boxes
#' @param labels labels for the legend (should be the same number as distinct colors in \code{color_col}); \code{NULL} == no labels/legend
#' @param labels labels for the legend (should be the same number as distinct colors in
#' \code{color_col}); \code{NULL} == no labels/legend
#' @param legend_title title for the legend
#' @param legend_position "\code{none}", "\code{top}", "\code{left}", "\code{right}" or "\code{bottom}" (defaults to "\code{top}")
#' @param legend_position "\code{none}", "\code{top}", "\code{left}", "\code{right}" or
#' "\code{bottom}" (defaults to "\code{top}")
#' @param plot_title title for the plot
#' @param title_position where to put the title ("\code{bottom}" or "\code{top}" or "" for none); if "\code{bottom}", you get back a grob vs a ggplot object
#' @param title_position where to put the title ("\code{bottom}" or "\code{top}" or ""
#' for none); if "\code{bottom}", you get back a grob vs a ggplot object
#' @return ggplot2 object or grob
#' @export
#' @examples
#' \dontrun{
#' library(httr)
#' library(dplyr)
#' election_2012 <- GET("https://raw.githubusercontent.com/hrbrmstr/statebins/master/tmp/election2012.csv")
#' results <- read.csv(textConnection(content(election_2012, as="text")), header=TRUE, stringsAsFactors=FALSE)
#' results <- results %>% mutate(color=ifelse(is.na(Obama), "#2166ac", "#b2182b")) %>% select(state, color)
#' results %>% statebins_manual(font_size=4, text_color = "white", labels=c("Romney", "Obama"), legend_position="right", legend_title="Winner")
#' election_2012 <-
#' GET("https://raw.githubusercontent.com/hrbrmstr/statebins/master/tmp/election2012.csv")
#' results <- read.csv(textConnection(content(election_2012, as="text")),
#' header=TRUE, stringsAsFactors=FALSE)
#' results <- results %>%
#' mutate(color=ifelse(is.na(Obama), "#2166ac", "#b2182b")) %>%
#' select(state, color)
#' results %>%
#' statebins_manual(font_size=4,
#' text_color = "white", labels=c("Romney", "Obama"),
#' legend_position="right", legend_title="Winner")
#' }
statebins_manual <- function(state_data, state_col="state", color_col="color",
text_color="black", font_size=3,

7
README.Rmd

@ -1,8 +1,8 @@
---
title: "README"
author: "Bob Rudis"
date: January 30, 2015
title: "statebins"
output:
html_document:
keep_md: true
md_document:
variant: markdown_github
---
@ -23,6 +23,7 @@ The following functions are implemented:
### News
- Version `1.2.2` released (CRAN update)
- Version `1.2.1` released - Added support for `PR`/`Puerto Rico`[[1](https://github.com/hrbrmstr/statebins/issues/2)] and fixed a bug[[2](https://github.com/hrbrmstr/statebins/issues/3)] when using anything but a `data.frame` as input. Also no longer fails (deals with the following but with a warning) when duplicate states are in the input data or invalid states are in the input data.
- Version `1.1.0` released - `statebins_manual()` for manual placement of colors and moving of AK in support of a [pull request](https://github.com/hrbrmstr/statebins/pull/1) by [hansthompson](https://github.com/hansthompson)
- Version `1.0.0` released

284
README.html

File diff suppressed because one or more lines are too long

144
README.md

@ -1,43 +1,51 @@
# statebins
<!-- output: html_document -->
statebins - U.S. State Cartogram Heatmaps in R; an alternative to choropleth maps for USA States
The following functions are implemented:
- `statebins` - creates "statebin" charts in the style of <http://bit.ly/statebins> - This version uses discrete `RColorBrewer` scales, binned by the "breaks" parameter.
- `statebins_continuous` - creates "statebin" charts in the style of <http://bit.ly/statebins> - This version uses a continuous scale based on `RColorBrewer` scales (passing in a 6 element `RColorBrewer` palette to `scale_fill_gradientn`).
- `statebins_manual` - creates "statebin" charts using manually specified colors in a column
- `statebins` - creates "statebin" charts in the style of http://bit.ly/statebins - This version uses discrete `RColorBrewer` scales, binned by the "breaks" parameter.
- `statebins_continuous` - creates "statebin" charts in the style of http://bit.ly/statebins - This version uses a continuous scale based on `RColorBrewer` scales (passing in a 6 element `RColorBrewer` palette to `scale_fill_gradientn`).
- `statebins_manual` - creates "statebin" charts using manually specified colors in a column
### TODO
- The current version is usable, but I think the plot margins and the legends need work
- Apply algorithm to switch to light-on-dark depending on the background tile color
- The current version is usable, but I think the plot margins and the legends need work
- Apply algorithm to switch to light-on-dark depending on the background tile color
### News
- Version `1.2.1` released - Added support for `PR`/`Puerto Rico`[[1](https://github.com/hrbrmstr/statebins/issues/2)] and fixed a bug[[2](https://github.com/hrbrmstr/statebins/issues/3)] when using anything but a `data.frame` as input. Also no longer fails (deals with the following but with a warning) when duplicate states are in the input data or invalid states are in the input data.
- Version `1.1.0` released - `statebins_manual()` for manual placement of colors and moving of AK in support of a [pull request](https://github.com/hrbrmstr/statebins/pull/1) by [hansthompson](https://github.com/hansthompson)
- Version `1.0.0` released
- Version `1.2.1` released - Added support for `PR`/`Puerto Rico`[[1](https://github.com/hrbrmstr/statebins/issues/2)] and fixed a bug[[2](https://github.com/hrbrmstr/statebins/issues/3)] when using anything but a `data.frame` as input. Also no longer fails (deals with the following but with a warning) when duplicate states are in the input data or invalid states are in the input data.
- Version `1.1.0` released - `statebins_manual()` for manual placement of colors and moving of AK in support of a [pull request](https://github.com/hrbrmstr/statebins/pull/1) by [hansthompson](https://github.com/hansthompson)
- Version `1.0.0` released
### Installation
``` r
```r
devtools::install_github("hrbrmstr/statebins")
```
### 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
```r
library(statebins)
# current verison
packageVersion("statebins")
```
## [1] '1.2.1'
```
## [1] '1.2.2'
```
``` r
```r
# the original wapo data
dat <- read.csv("http://www.washingtonpost.com/wp-srv/special/business/states-most-threatened-by-trade/states.csv?cache=1", stringsAsFactors=FALSE)
@ -47,39 +55,72 @@ gg <- statebins(dat, "state", "avgshare94_00", breaks=4,
legend_title="Share of workforce with jobs lost or threatened by trade", font_size=3,
brewer_pal="Blues", text_color="black",
plot_title="1994-2000", title_position="bottom")
```
```
## Warning: `show_guide` has been deprecated. Please use `show.legend` instead.
```
```r
gg
```
![](README_files/figure-markdown_github/unnamed-chunk-3-1.png)
```
## TableGrob (2 x 1) "arrange": 2 grobs
## z cells name grob
## 1 (1-1,1-1) arrange gtable[layout]
## sub 2 (2-2,1-1) arrange text[GRID.text.1]
```
``` r
```r
# continuous scale, legend on top
gg2 <- statebins_continuous(dat, "state", "avgshare01_07",
legend_title="Share of workforce with jobs lost or threatened by trade", legend_position="top",
brewer_pal="OrRd", text_color="black", font_size=3,
plot_title="2001-2007", title_position="bottom")
```
```
## Warning: `show_guide` has been deprecated. Please use `show.legend` instead.
```
```r
gg2
```
![](README_files/figure-markdown_github/unnamed-chunk-3-2.png)
```
## TableGrob (2 x 1) "arrange": 2 grobs
## z cells name grob
## 1 (1-1,1-1) arrange gtable[layout]
## sub 2 (2-2,1-1) arrange text[GRID.text.53]
```
``` r
```r
# continuous scale, no legend
gg3 <- statebins_continuous(dat, "state", "avgshare08_12",
legend_title="States", legend_position="none",
brewer_pal="Purples", text_color="black", font_size=3,
plot_title="2008-2012", title_position="bottom")
```
```
## Warning: `show_guide` has been deprecated. Please use `show.legend` instead.
```
```r
gg3
```
![](README_files/figure-markdown_github/unnamed-chunk-3-3.png)
```
## TableGrob (2 x 1) "arrange": 2 grobs
## z cells name grob
## 1 (1-1,1-1) arrange gtable[layout]
## sub 2 (2-2,1-1) arrange text[GRID.text.89]
```
``` r
```r
# mortality (only to show PR and using a data.table)
# from: http://www.cdc.gov/nchs/fastats/state-and-territorial-data.htm
@ -88,9 +129,18 @@ statebins_continuous(dat, "state", "death_rate", legend_title="Per 100K pop",
plot_title="Mortality Rate (2010)")
```
![](README_files/figure-markdown_github/unnamed-chunk-3-4.png)
```
## Warning: `show_guide` has been deprecated. Please use `show.legend` instead.
```
```
## TableGrob (2 x 1) "arrange": 2 grobs
## z cells name grob
## 1 (1-1,1-1) arrange gtable[layout]
## sub 2 (2-2,1-1) arrange text[GRID.text.117]
```
``` r
```r
# fertility (only to show tbl_dt)
dat <- dplyr::tbl_dt(dat)
@ -98,9 +148,18 @@ statebins_continuous(dat, "state", "fertility_rate", legend_title="Per 100K pop"
plot_title="Fertility Rate (2010)", brewer_pal="PuBuGn")
```
![](README_files/figure-markdown_github/unnamed-chunk-3-5.png)
```
## Warning: `show_guide` has been deprecated. Please use `show.legend` instead.
```
```
## TableGrob (2 x 1) "arrange": 2 grobs
## z cells name grob
## 1 (1-1,1-1) arrange gtable[layout]
## sub 2 (2-2,1-1) arrange text[GRID.text.153]
```
``` r
```r
# manual - perhaps good for elections?
library(httr)
@ -111,9 +170,13 @@ results <- results %>% mutate(color=ifelse(is.na(Obama), "#2166ac", "#b2182b"))
results %>% statebins_manual(font_size=4, text_color = "white", labels=c("Romney", "Obama"), legend_position="right", legend_title="Winner")
```
![](README_files/figure-markdown_github/unnamed-chunk-3-6.png)
```
## Warning: `show_guide` has been deprecated. Please use `show.legend` instead.
```
![](README_files/figure-html/unnamed-chunk-3-1.png)
``` r
```r
# or, more like the one in the WaPo article; i might be picking the wrong columns here. it's just for an example
sb <- function(col, title) {
@ -121,7 +184,8 @@ sb <- function(col, title) {
}
```
``` r
```r
# cheating and using <table> to arrange them below and also making a WaPo-like legend,
# since mucking with grid graphics margins/padding was not an option time-wise at the moment
@ -162,12 +226,13 @@ sb("avgshare08_12", "2008-2012")
</td><td width="50%"> &nbsp; </td></tr></table>
-->
<center>
![img](./tmp/statebins-composite.png)
</center>
<center>![img](./tmp/statebins-composite.png)</center>
And, we'll throw in a gratuitous animation for good measure:
``` r
```r
# data set from StatsAmerica - http://www.statsamerica.org/profiles/sip_index.html
# median household income from the ACS survey
@ -196,23 +261,28 @@ sapply(unique(miacs$year), function(year) {
system("convert -background white -alpha remove -layers OptimizePlus -delay 150 tmp/*.png -loop 1 tmp/household.gif")
```
<center>
![img](./tmp/household.gif)
</embed>
</center>
<center>![img](./tmp/household.gif)</embed></center>
### Test Results
``` r
```r
library(statebins)
library(testthat)
date()
```
## [1] "Fri Jan 30 06:10:21 2015"
```
## [1] "Mon Dec 21 08:21:03 2015"
```
``` r
```r
test_dir("tests/")
```
## basic functionality :
```
## testthat results ========================================================================================================
## OK: 0 SKIPPED: 0 FAILED: 0
```

BIN
README_files/figure-html/unnamed-chunk-3-1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
README_files/figure-markdown_github/unnamed-chunk-3-1.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 36 KiB

29
cran-comments.md

@ -0,0 +1,29 @@
## Why an update?
* fix issues identified by CRAN
* compatibility with new ggplot2
## ALSO NOTE that these words are *not* mis-spelled.
Cartogram (3:19)
Choropleth (3:62)
Heatmaps (3:29)
choropleth (9:45)
statebins (9:14, 11:47)
## Test environments
* local OS X install (devel and release)
* ubuntu 12.04 (on travis-ci), R
* win-builder (devel and release)
## R CMD check results
There were no ERRORs or WARNINGs.
One NOTE:
Maintainer: ‘Bob Rudis <bob@rudis.net>
License components with restrictions and base license permitting such:
MIT + file LICENSE
File 'LICENSE':
YEAR: 2015
COPYRIGHT HOLDER: Bob Rudis

2
man/statebins-package.Rd

@ -1,4 +1,4 @@
% Generated by roxygen2 (4.1.0): do not edit by hand
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/statebins-package.R
\docType{package}
\name{statebins-package}

25
man/statebins.Rd

@ -1,4 +1,4 @@
% Generated by roxygen2 (4.1.0): do not edit by hand
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/statebins.R
\name{statebins}
\alias{statebins}
@ -13,7 +13,8 @@ statebins(state_data, state_col = "state", value_col = "value",
\arguments{
\item{state_data}{data frame of states and values to plot}
\item{state_col}{column name in \code{state_data} that has the states. no duplicates and can be names (e.g. "\code{Maine}") or abbreviatons (e.g. "\code{ME}")}
\item{state_col}{column name in \code{state_data} that has the states. no duplicates
and can be names (e.g. "\code{Maine}") or abbreviatons (e.g. "\code{ME}")}
\item{value_col}{column name in \code{state_data} that holds the values to be plotted}
@ -23,19 +24,22 @@ statebins(state_data, state_col = "state", value_col = "value",
\item{state_border_col}{default "\code{white}" - this creates the "spaces" between boxes}
\item{breaks}{a single number (greater than or equal to 2) giving the number of intervals into which data values are to be cut.}
\item{breaks}{a single number (greater than or equal to 2) giving the number of intervals
into which data values are to be cut.}
\item{labels}{labels for the levels \code{breaks}}
\item{legend_title}{title for the legend}
\item{legend_position}{"\code{none}", "\code{top}", "\code{left}", "\code{right}" or "\code{bottom}" (defaults to "\code{top}")}
\item{legend_position}{"\code{none}", "\code{top}", "\code{left}", "\code{right}" or
"\code{bottom}" (defaults to "\code{top}")}
\item{brewer_pal}{which named \link{RColorBrewer} palette to use (defaults to "PuBu")}
\item{brewer_pal}{which named \code{RColorBrewer} palette to use (defaults to "PuBu")}
\item{plot_title}{title for the plot}
\item{title_position}{where to put the title ("\code{bottom}" or "\code{top}" or "" for none); if "\code{bottom}", you get back a grob vs a ggplot object}
\item{title_position}{where to put the title ("\code{bottom}" or "\code{top}" or ""
for none); if "\code{bottom}", you get back a grob vs a ggplot object}
}
\value{
ggplot2 object or grob
@ -44,23 +48,24 @@ ggplot2 object or grob
\code{statebins()} creates "statebin" charts in the style of \url{http://bit.ly/statebins}
}
\details{
This version uses discrete \link{RColorBrewer} scales, binned by the "breaks" parameter.
This version uses discrete \code{RColorBrewer} scales, binned by the "breaks" parameter.
The function minimally expects the caller to pass in a data frame that:
\itemize{
\item has one column of all state abbreviationis (all caps, including \code{DC} & \code{PR} or a column of state names (standard capitalization) named \code{state}
\item has one column of all state abbreviationis (all caps, including \code{DC} &
\code{PR} or a column of state names (standard capitalization) named \code{state}
\item has another column of values named \code{value}
}
Doing so will create a "statebin" chart with 5 breaks and return a \link{ggplot2} object.
Doing so will create a "statebin" chart with 5 breaks and return a ggplot2 object.
You can use a different column for the state names and values by changing \code{state_col}
and \code{value_col} accordingly.
To add a title, change \code{plot_title} to anything but an empty atomic string vector (i.e. \code{""})
and set \code{title_position} to "\code{top}" or "\code{bottom}". Choosing "\code{bottom}"
will cause \code{statebins} to use \link{arrangeGrob} to position the title via \code{sub} and
will cause \code{statebins} to use \code{arrangeGrob} to position the title via \code{sub} and
return a frame grob instead of a ggplot2 object.
}
\examples{

24
man/statebins_continuous.Rd

@ -1,4 +1,4 @@
% Generated by roxygen2 (4.1.0): do not edit by hand
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/statebins.R
\name{statebins_continuous}
\alias{statebins_continuous}
@ -12,7 +12,8 @@ statebins_continuous(state_data, state_col = "state", value_col = "value",
\arguments{
\item{state_data}{data frame of states and values to plot}
\item{state_col}{column name in \code{state_data} that has the states. no duplicates and can be names (e.g. "\code{Maine}") or abbreviatons (e.g. "\code{ME}")}
\item{state_col}{column name in \code{state_data} that has the states. no duplicates
and can be names (e.g. "\code{Maine}") or abbreviatons (e.g. "\code{ME}")}
\item{value_col}{column name in \code{state_data} that holds the values to be plotted}
@ -24,13 +25,15 @@ statebins_continuous(state_data, state_col = "state", value_col = "value",
\item{legend_title}{title for the legend}
\item{legend_position}{"\code{none}", "\code{top}", "\code{left}", "\code{right}" or "\code{bottom}" (defaults to "\code{top}")}
\item{legend_position}{"\code{none}", "\code{top}", "\code{left}", "\code{right}" or
"\code{bottom}" (defaults to "\code{top}")}
\item{brewer_pal}{which named \link{RColorBrewer} palette to use (defaults to "PuBu")}
\item{brewer_pal}{which named \code{RColorBrewer} palette to use (defaults to "PuBu")}
\item{plot_title}{title for the plot}
\item{title_position}{where to put the title ("\code{bottom}" or "\code{top}" or "" for none); if "\code{bottom}", you get back a grob vs a ggplot object}
\item{title_position}{where to put the title ("\code{bottom}" or "\code{top}" or ""
for none); if "\code{bottom}", you get back a grob vs a ggplot object}
}
\value{
ggplot2 object or grob
@ -39,24 +42,25 @@ ggplot2 object or grob
\code{statebins()} creates "statebin" charts in the style of \url{http://bit.ly/statebins}
}
\details{
This version uses a continuous scale based on \link{RColorBrewer} scales
(passing in a 6 element \code{RColorBrewer} palette to \link{scale_fill_gradientn}).
This version uses a continuous scale based on \code{RColorBrewer} scales
(passing in a 6 element \code{RColorBrewer} palette to \code{scale_fill_gradientn}).
The function minimally expects the caller to pass in a data frame that:
\itemize{
\item has one column of all state abbreviationis (all caps, including \code{DC} & \code{PR} ) or a column of state names (standard capitalization) named \code{state}
\item has one column of all state abbreviationis (all caps, including \code{DC} &
\code{PR} ) or a column of state names (standard capitalization) named \code{state}
\item has another column of values named \code{value}
}
Doing so will create a "statebin" chart with 5 breaks and return a \link{ggplot2} object.
Doing so will create a "statebin" chart with 5 breaks and return a \code{ggplot2} object.
You can use a different column for the state names and values by changing \code{state_col}
and \code{value_col} accordingly.
To add a title, change \code{plot_title} to anything but an empty atomic string vector (i.e. \code{""})
and set \code{title_position} to "\code{top}" or "\code{bottom}". Choosing "\code{bottom}"
will cause \code{statebins} to use \link{arrangeGrob} to position the title via \code{sub} and
will cause \code{statebins} to use \code{arrangeGrob} to position the title via \code{sub} and
return a frame grob instead of a ggplot2 object.
}
\examples{

36
man/statebins_manual.Rd

@ -1,4 +1,4 @@
% Generated by roxygen2 (4.1.0): do not edit by hand
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/statebins.R
\name{statebins_manual}
\alias{statebins_manual}
@ -12,7 +12,8 @@ statebins_manual(state_data, state_col = "state", color_col = "color",
\arguments{
\item{state_data}{data frame of states and values to plot}
\item{state_col}{column name in \code{state_data} that has the states. no duplicates and can be names (e.g. "\code{Maine}") or abbreviatons (e.g. "\code{ME}")}
\item{state_col}{column name in \code{state_data} that has the states. no duplicates
and can be names (e.g. "\code{Maine}") or abbreviatons (e.g. "\code{ME}")}
\item{color_col}{column name in \code{state_data} that holds the colors to be used}
@ -22,15 +23,18 @@ statebins_manual(state_data, state_col = "state", color_col = "color",
\item{state_border_col}{default "\code{white}" - this creates the "spaces" between boxes}
\item{labels}{labels for the legend (should be the same number as distinct colors in \code{color_col}); \code{NULL} == no labels/legend}
\item{labels}{labels for the legend (should be the same number as distinct colors in
\code{color_col}); \code{NULL} == no labels/legend}
\item{legend_title}{title for the legend}
\item{legend_position}{"\code{none}", "\code{top}", "\code{left}", "\code{right}" or "\code{bottom}" (defaults to "\code{top}")}
\item{legend_position}{"\code{none}", "\code{top}", "\code{left}", "\code{right}" or
"\code{bottom}" (defaults to "\code{top}")}
\item{plot_title}{title for the plot}
\item{title_position}{where to put the title ("\code{bottom}" or "\code{top}" or "" for none); if "\code{bottom}", you get back a grob vs a ggplot object}
\item{title_position}{where to put the title ("\code{bottom}" or "\code{top}" or ""
for none); if "\code{bottom}", you get back a grob vs a ggplot object}
}
\value{
ggplot2 object or grob
@ -44,28 +48,36 @@ This version uses manual colors (i.e. pass in a column that defines the color pe
The function minimally expects the caller to pass in a data frame that:
\itemize{
\item has one column of all state abbreviationis (all caps, including \code{DC} & \code{PR} or a column of state names (standard capitalization) named \code{state}
\item has one column of all state abbreviationis (all caps, including \code{DC} &
\code{PR} or a column of state names (standard capitalization) named \code{state}
\item has another column of colors named \code{color}
}
Doing so will create a "statebin" chart with the colors specified as a \link{ggplot2} object.
Doing so will create a "statebin" chart with the colors specified as a ggplot2 object.
You can use a different column for the state names and colors by changing \code{state_col}
and \code{color_col} accordingly.
To add a title, change \code{plot_title} to anything but an empty atomic string vector (i.e. \code{""})
and set \code{title_position} to "\code{top}" or "\code{bottom}". Choosing "\code{bottom}"
will cause \code{statebins} to use \link{arrangeGrob} to position the title via \code{sub} and
will cause \code{statebins} to use \code{arrangeGrob} to position the title via \code{sub} and
return a frame grob instead of a ggplot2 object.
}
\examples{
\dontrun{
library(httr)
library(dplyr)
election_2012 <- GET("https://raw.githubusercontent.com/hrbrmstr/statebins/master/tmp/election2012.csv")
results <- read.csv(textConnection(content(election_2012, as="text")), header=TRUE, stringsAsFactors=FALSE)
results <- results \%>\% mutate(color=ifelse(is.na(Obama), "#2166ac", "#b2182b")) \%>\% select(state, color)
results \%>\% statebins_manual(font_size=4, text_color = "white", labels=c("Romney", "Obama"), legend_position="right", legend_title="Winner")
election_2012 <-
GET("https://raw.githubusercontent.com/hrbrmstr/statebins/master/tmp/election2012.csv")
results <- read.csv(textConnection(content(election_2012, as="text")),
header=TRUE, stringsAsFactors=FALSE)
results <- results \%>\%
mutate(color=ifelse(is.na(Obama), "#2166ac", "#b2182b")) \%>\%
select(state, color)
results \%>\%
statebins_manual(font_size=4,
text_color = "white", labels=c("Romney", "Obama"),
legend_position="right", legend_title="Winner")
}
}

Loading…
Cancel
Save