Bob Rudis
10 years ago
commit
adf7588be7
18 changed files with 422 additions and 0 deletions
@ -0,0 +1,7 @@ |
|||||
|
^.*\.Rproj$ |
||||
|
^\.Rproj\.user$ |
||||
|
^_README.Rmd$ |
||||
|
^NEWS.md$ |
||||
|
^\.travis\.yml$ |
||||
|
^README.md$ |
||||
|
^_README_files/* |
@ -0,0 +1,7 @@ |
|||||
|
.Rproj.user |
||||
|
.Rhistory |
||||
|
.RData |
||||
|
.Rproj |
||||
|
src/*.o |
||||
|
src/*.so |
||||
|
src/*.dll |
@ -0,0 +1,23 @@ |
|||||
|
language: c |
||||
|
|
||||
|
before_install: |
||||
|
- curl -OL http://raw.github.com/craigcitro/r-travis/master/scripts/travis-tool.sh |
||||
|
- chmod 755 ./travis-tool.sh |
||||
|
- ./travis-tool.sh bootstrap |
||||
|
|
||||
|
install: |
||||
|
- ./travis-tool.sh install_github plyr |
||||
|
- ./travis-tool.sh install_deps |
||||
|
|
||||
|
script: ./travis-tool.sh run_tests |
||||
|
|
||||
|
on_failure: |
||||
|
- ./travis-tool.sh dump_logs |
||||
|
|
||||
|
branches: |
||||
|
except: |
||||
|
- /-expt$/ |
||||
|
notifications: |
||||
|
email: |
||||
|
on_success: change |
||||
|
on_failure: change |
@ -0,0 +1,20 @@ |
|||||
|
Package: statebins |
||||
|
Type: Package |
||||
|
Title: statebins is an alternative to choropleth maps for US States |
||||
|
Version: 1.0 |
||||
|
Date: 2014-08-25 |
||||
|
Author: Bob Rudis (@hrbrmstr) |
||||
|
Maintainer: Bob Rudis <bob@rudis.net> |
||||
|
Description: statebins is an alternative to choropleth maps for US States |
||||
|
URL: http://github.com/hrbrmstr/statebins |
||||
|
BugReports: https://github.com/hrbrmstr/statebins/issues |
||||
|
License: MIT + file LICENSE |
||||
|
LazyData: yes |
||||
|
Suggests: |
||||
|
testthat |
||||
|
Depends: |
||||
|
R (>= 3.0.0), |
||||
|
ggplot2, |
||||
|
grid, |
||||
|
scales, |
||||
|
gridExtra |
@ -0,0 +1,2 @@ |
|||||
|
YEAR: 2014 |
||||
|
COPYRIGHT HOLDER: Bob Rudis |
@ -0,0 +1,8 @@ |
|||||
|
# Generated by roxygen2 (4.0.1.99): do not edit by hand |
||||
|
|
||||
|
export(statebins) |
||||
|
export(statebins_continuous) |
||||
|
import(ggplot2) |
||||
|
import(grid) |
||||
|
import(gridExtra) |
||||
|
import(scales) |
@ -0,0 +1,6 @@ |
|||||
|
#' statebins is an alternative to choropleth maps for US States |
||||
|
#' @name statebins |
||||
|
#' @docType package |
||||
|
#' @author Bob Rudis (@@hrbrmstr) |
||||
|
#' @import ggplot2 scales grid gridExtra |
||||
|
NULL |
@ -0,0 +1,143 @@ |
|||||
|
|
||||
|
#' Create ggplot-based "statebin" charts in the style of \url{http://www.washingtonpost.com/wp-srv/special/business/states-most-threatened-by-trade/} |
||||
|
#' |
||||
|
#' This version uses a discrete scale, binned by the "breaks" parameter |
||||
|
#' @param state_data |
||||
|
#' @param state_col |
||||
|
#' @param value_col |
||||
|
#' @param text_color |
||||
|
#' @param state_border_col |
||||
|
#' @param breaks |
||||
|
#' @param labels |
||||
|
#' @param legend_title |
||||
|
#' @param legend_position |
||||
|
#' @param brewer_pal |
||||
|
#' @param plot_title |
||||
|
#' @param title_position |
||||
|
#' @return ggplot2 object or grob |
||||
|
#' @export |
||||
|
statebins <- function(state_data, state_col="state", value_col="value", |
||||
|
text_color="white", |
||||
|
state_border_col="white", breaks=5, labels=1:4, |
||||
|
legend_title="Legend", legend_position="top", |
||||
|
brewer_pal="PuBu", plot_title="", title_position="bottom") { |
||||
|
|
||||
|
stopifnot(breaks > 0 && breaks < 10) |
||||
|
stopifnot(title_position %in% c("", "top", "bottom")) |
||||
|
stopifnot(legend_position %in% c("", "none", "top", "bottom")) |
||||
|
|
||||
|
if (max(nchar(state_data[,state_col])) == 2) { |
||||
|
merge.x <- "abbrev" |
||||
|
} else { |
||||
|
merge.x <- "state" |
||||
|
} |
||||
|
|
||||
|
stopifnot(state_data[,state_col] %in% state_coords[,merge.x]) |
||||
|
stopifnot(!any(duplicated(state_data[,state_col]))) |
||||
|
|
||||
|
st.dat <- merge(state_coords, state_data, by.x=merge.x, by.y=state_col) |
||||
|
|
||||
|
st.dat$fill_color <- cut(st.dat[, value_col], breaks=breaks, labels=labels) |
||||
|
|
||||
|
gg <- ggplot(st.dat, aes(x=col, y=row, label=abbrev)) |
||||
|
gg <- gg + geom_tile(aes(fill=fill_color)) |
||||
|
gg <- gg + geom_tile(color=state_border_col, aes(fill=fill_color), size=3, show_guide=FALSE) |
||||
|
gg <- gg + geom_text(color=text_color) |
||||
|
gg <- gg + scale_y_reverse() |
||||
|
gg <- gg + scale_fill_brewer(palette=brewer_pal, name=legend_title) |
||||
|
gg <- gg + coord_equal() |
||||
|
gg <- gg + labs(x="", y="", title="") |
||||
|
gg <- gg + theme_bw() |
||||
|
gg <- gg + theme(legend.position=legend_position) |
||||
|
gg <- gg + theme(plot.margin=unit(c(0,0,0,0), "lines")) |
||||
|
gg <- gg + theme(panel.margin=unit(0, "lines")) |
||||
|
gg <- gg + theme(panel.border=element_blank()) |
||||
|
gg <- gg + theme(panel.grid=element_blank()) |
||||
|
gg <- gg + theme(panel.background=element_blank()) |
||||
|
gg <- gg + theme(axis.ticks=element_blank()) |
||||
|
gg <- gg + theme(axis.text=element_blank()) |
||||
|
|
||||
|
if (plot_title != "") { |
||||
|
|
||||
|
if (title_position == "bottom") { |
||||
|
gg <- arrangeGrob(gg, sub=textGrob(plot_title, gp=gpar(cex=1))) |
||||
|
} else { |
||||
|
gg <- gg + ggtitle(plot_title) |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
return(gg) |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
#' Create ggplot-based "statebin" charts in the style of \url{http://www.washingtonpost.com/wp-srv/special/business/states-most-threatened-by-trade/} |
||||
|
#' |
||||
|
#' This version uses a discrete scale, binned by the "breaks" parameter |
||||
|
#' @param state_data |
||||
|
#' @param state_col |
||||
|
#' @param value_col |
||||
|
#' @param text_color |
||||
|
#' @param state_border_col |
||||
|
#' @param legend_title |
||||
|
#' @param legend_position |
||||
|
#' @param brewer_pal |
||||
|
#' @param plot_title |
||||
|
#' @param title_position |
||||
|
#' @return ggplot2 object or grob |
||||
|
#' @export |
||||
|
statebins_continuous <- function(state_data, state_col="state", value_col="value", |
||||
|
text_color="white", |
||||
|
state_border_col="white", |
||||
|
legend_title="Legend", legend_position="top", |
||||
|
brewer_pal="PuBu", plot_title="", title_position="bottom") { |
||||
|
|
||||
|
stopifnot(title_position %in% c("", "top", "bottom")) |
||||
|
stopifnot(legend_position %in% c("", "none", "top", "bottom")) |
||||
|
|
||||
|
if (max(nchar(state_data[,state_col])) == 2) { |
||||
|
merge.x <- "abbrev" |
||||
|
} else { |
||||
|
merge.x <- "state" |
||||
|
} |
||||
|
|
||||
|
stopifnot(state_data[,state_col] %in% state_coords[,merge.x]) |
||||
|
stopifnot(!any(duplicated(state_data[,state_col]))) |
||||
|
|
||||
|
st.dat <- merge(state_coords, state_data, by.x=merge.x, by.y=state_col) |
||||
|
|
||||
|
gg <- ggplot(st.dat, aes(x=col, y=row, label=abbrev)) |
||||
|
gg <- gg + geom_tile(aes_string(fill=value_col)) |
||||
|
gg <- gg + geom_tile(color=state_border_col, |
||||
|
aes_string(fill=value_col), size=3, show_guide=FALSE) |
||||
|
gg <- gg + geom_text(color=text_color) |
||||
|
gg <- gg + scale_y_reverse() |
||||
|
gg <- gg + continuous_scale("fill", "distiller", |
||||
|
gradient_n_pal(brewer_pal(type, brewer_pal)(6), NULL, "Lab"), na.value = "grey50", name=legend_title) |
||||
|
gg <- gg + coord_equal() |
||||
|
gg <- gg + labs(x="", y="", title="") |
||||
|
gg <- gg + theme_bw() |
||||
|
gg <- gg + theme(legend.position=legend_position) |
||||
|
gg <- gg + theme(plot.margin=unit(c(0,0,0,0), "lines")) |
||||
|
gg <- gg + theme(panel.margin=unit(0, "lines")) |
||||
|
gg <- gg + theme(panel.border=element_blank()) |
||||
|
gg <- gg + theme(panel.grid=element_blank()) |
||||
|
gg <- gg + theme(panel.background=element_blank()) |
||||
|
gg <- gg + theme(axis.ticks=element_blank()) |
||||
|
gg <- gg + theme(axis.text=element_blank()) |
||||
|
|
||||
|
if (plot_title != "") { |
||||
|
|
||||
|
if (title_position == "bottom") { |
||||
|
gg <- arrangeGrob(gg, sub=textGrob(plot_title, gp=gpar(cex=1))) |
||||
|
} else { |
||||
|
gg <- gg + ggtitle(plot_title) |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
return(gg) |
||||
|
|
||||
|
} |
@ -0,0 +1,75 @@ |
|||||
|
statesquares is ... |
||||
|
|
||||
|
The following functions are implemented: |
||||
|
|
||||
|
- `statebins` - |
||||
|
|
||||
|
### News |
||||
|
|
||||
|
- Version `1.0.0` released |
||||
|
|
||||
|
### Installation |
||||
|
|
||||
|
``` {.r} |
||||
|
devtools::install_github("hrbrmstr/statebins") |
||||
|
``` |
||||
|
|
||||
|
### Usage |
||||
|
|
||||
|
``` {.r} |
||||
|
library(statebins) |
||||
|
``` |
||||
|
|
||||
|
## Loading required package: ggplot2 |
||||
|
## Loading required package: grid |
||||
|
## Loading required package: scales |
||||
|
## Loading required package: gridExtra |
||||
|
|
||||
|
``` {.r} |
||||
|
# current verison |
||||
|
packageVersion("statebins") |
||||
|
``` |
||||
|
|
||||
|
## [1] '1.0' |
||||
|
|
||||
|
``` {.r} |
||||
|
dat <- read.csv("http://www.washingtonpost.com/wp-srv/special/business/states-most-threatened-by-trade/states.csv?cache=1", stringsAsFactors=FALSE) |
||||
|
|
||||
|
gg <- statebins(dat, "state", "avgshare94_00", breaks=4, |
||||
|
labels=c("0-1", "1-2", "2-3", "3-4"), |
||||
|
legend_title="State Groups", |
||||
|
brewer_pal="Blues", text_color="black", |
||||
|
plot_title="1994-2000", title_position="bottom") |
||||
|
|
||||
|
gg |
||||
|
``` |
||||
|
|
||||
|
![plot of chunk unnamed-chunk-3](./_README_files/figure-markdown_github/unnamed-chunk-31.png) |
||||
|
|
||||
|
``` {.r} |
||||
|
gg2 <- statebins_continuous(dat, "state", "avgshare01_07", |
||||
|
legend_title="States", legend_position="none", |
||||
|
brewer_pal="OrRd", text_color="black", |
||||
|
plot_title="1994-2000", title_position="bottom") |
||||
|
|
||||
|
gg2 |
||||
|
``` |
||||
|
|
||||
|
![plot of chunk unnamed-chunk-3](./_README_files/figure-markdown_github/unnamed-chunk-32.png) |
||||
|
|
||||
|
### Test Results |
||||
|
|
||||
|
``` {.r} |
||||
|
library(statebins) |
||||
|
library(testthat) |
||||
|
|
||||
|
date() |
||||
|
``` |
||||
|
|
||||
|
## [1] "Mon Aug 25 22:19:55 2014" |
||||
|
|
||||
|
``` {.r} |
||||
|
test_dir("tests/") |
||||
|
``` |
||||
|
|
||||
|
## basic functionality : |
@ -0,0 +1,67 @@ |
|||||
|
--- |
||||
|
title: "README" |
||||
|
author: "Bob Rudis" |
||||
|
date: August 25, 2014 |
||||
|
output: |
||||
|
md_document: |
||||
|
variant: markdown_github |
||||
|
--- |
||||
|
|
||||
|
statesquares is ... |
||||
|
|
||||
|
The following functions are implemented: |
||||
|
|
||||
|
- `statebins` - |
||||
|
|
||||
|
### News |
||||
|
|
||||
|
- Version `1.0.0` released |
||||
|
|
||||
|
### Installation |
||||
|
|
||||
|
```{r eval=FALSE} |
||||
|
devtools::install_github("hrbrmstr/statebins") |
||||
|
``` |
||||
|
|
||||
|
```{r echo=FALSE, message=FALSE, warning=FALSE, error=FALSE} |
||||
|
options(width=120) |
||||
|
``` |
||||
|
|
||||
|
### Usage |
||||
|
|
||||
|
```{r} |
||||
|
library(statebins) |
||||
|
|
||||
|
# current verison |
||||
|
packageVersion("statebins") |
||||
|
|
||||
|
dat <- read.csv("http://www.washingtonpost.com/wp-srv/special/business/states-most-threatened-by-trade/states.csv?cache=1", stringsAsFactors=FALSE) |
||||
|
|
||||
|
gg <- statebins(dat, "state", "avgshare94_00", breaks=4, |
||||
|
labels=c("0-1", "1-2", "2-3", "3-4"), |
||||
|
legend_title="State Groups", |
||||
|
brewer_pal="Blues", text_color="black", |
||||
|
plot_title="1994-2000", title_position="bottom") |
||||
|
|
||||
|
gg |
||||
|
|
||||
|
gg2 <- statebins_continuous(dat, "state", "avgshare01_07", |
||||
|
legend_title="States", legend_position="none", |
||||
|
brewer_pal="OrRd", text_color="black", |
||||
|
plot_title="1994-2000", title_position="bottom") |
||||
|
|
||||
|
gg2 |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
### Test Results |
||||
|
|
||||
|
```{r} |
||||
|
library(statebins) |
||||
|
library(testthat) |
||||
|
|
||||
|
date() |
||||
|
|
||||
|
test_dir("tests/") |
||||
|
``` |
||||
|
|
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 43 KiB |
Binary file not shown.
@ -0,0 +1,21 @@ |
|||||
|
% Generated by roxygen2 (4.0.1.99): do not edit by hand |
||||
|
\docType{package} |
||||
|
\name{statebins} |
||||
|
\alias{statebins} |
||||
|
\alias{statebins-package} |
||||
|
\title{A package to ...} |
||||
|
\usage{ |
||||
|
statebins(state_data, state_col = "state", value_col = "value", |
||||
|
text_color = "white", state_border_col = "white", breaks = 5, |
||||
|
labels = 1:4, legend_title = "Legend", legend_position = "top", |
||||
|
brewer_pal = "PuBu", plot_title = "", title_position = "bottom") |
||||
|
} |
||||
|
\description{ |
||||
|
A package to ... |
||||
|
|
||||
|
This version uses a discrete scale, binned by the "breaks" parameter |
||||
|
} |
||||
|
\author{ |
||||
|
Bob Rudis (@hrbrmstr) |
||||
|
} |
||||
|
|
@ -0,0 +1,14 @@ |
|||||
|
% Generated by roxygen2 (4.0.1.99): do not edit by hand |
||||
|
\name{statebins_continuous} |
||||
|
\alias{statebins_continuous} |
||||
|
\title{Create ggplot-based "statebin" charts in the style of \url{http://www.washingtonpost.com/wp-srv/special/business/states-most-threatened-by-trade/}} |
||||
|
\usage{ |
||||
|
statebins_continuous(state_data, state_col = "state", value_col = "value", |
||||
|
text_color = "white", state_border_col = "white", |
||||
|
legend_title = "Legend", legend_position = "top", brewer_pal = "PuBu", |
||||
|
plot_title = "", title_position = "bottom") |
||||
|
} |
||||
|
\description{ |
||||
|
This version uses a discrete scale, binned by the "breaks" parameter |
||||
|
} |
||||
|
|
@ -0,0 +1,21 @@ |
|||||
|
Version: 1.0 |
||||
|
|
||||
|
RestoreWorkspace: Default |
||||
|
SaveWorkspace: Default |
||||
|
AlwaysSaveHistory: Default |
||||
|
|
||||
|
EnableCodeIndexing: Yes |
||||
|
UseSpacesForTab: Yes |
||||
|
NumSpacesForTab: 2 |
||||
|
Encoding: UTF-8 |
||||
|
|
||||
|
RnwWeave: Sweave |
||||
|
LaTeX: pdfLaTeX |
||||
|
|
||||
|
StripTrailingWhitespace: Yes |
||||
|
|
||||
|
BuildType: Package |
||||
|
PackageUseDevtools: Yes |
||||
|
PackageInstallArgs: --no-multiarch --with-keep.source |
||||
|
PackageBuildArgs: --resave-data |
||||
|
PackageRoxygenize: rd,collate,namespace |
@ -0,0 +1,2 @@ |
|||||
|
library(testthat) |
||||
|
test_check("statebins") |
@ -0,0 +1,6 @@ |
|||||
|
context("basic functionality") |
||||
|
test_that("we can do something", { |
||||
|
|
||||
|
#expect_that(some_function(), is_a("data.frame")) |
||||
|
|
||||
|
}) |
Loading…
Reference in new issue