Provides access to the 'PlanScore' Application Programming Interface (< https://github.com/PlanScore/PlanScore/blob/main/API.md>) for scoring redistricting plans. Allows for upload of plans from block assignment files and shape files. For shapes in memory, such as from 'sf' or 'redist', it processes them to save and upload. Includes tools for tidying responses and saving output from the website.

planscorer offers an R interface to PlanScore.org’s API.
You can install the stable version of planscorer from CRAN with:
install.packages('planscorer')
You can install the development version of planscorer from GitHub with:
# install.packages('remotes')
remotes::install_github('christopherkenny/planscorer')
To use planscorer, you must have an API key from PlanScore. Otherwise, you will get a 403 forbidden error.
To get a key, follow the instructions here.
Once you have a key, use ps_set_key('your_key'). Optionally use
ps_set_key('your_key', install = TRUE) to allow your key to be
available across sessions.
With a file, you can upload using the ps_upload_file() option:
library(planscorer)
## basic example code
file <- system.file('extdata/null-plan-incumbency.geojson', package = 'planscorer')
links <- ps_upload_file(file)
#> ℹ Using single-step upload.
To read the data results:
ps_ingest(links)
#> # A tibble: 2 × 62
#> district democratic_votes democratic_votes_sd democratic_wins republican_votes
#> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 1 155. 29.9 0 445.
#> 2 2 379. 29.6 0.998 221.
#> # ℹ 57 more variables: republican_votes_sd <dbl>, us_president_2016_dem <dbl>,
#> # us_president_2016_rep <dbl>, district_number <int>, polsby_popper <dbl>,
#> # reock <dbl>, declination <dbl>, declination_absolute_percent_rank <dbl>,
#> # declination_is_valid <dbl>, declination_positives <dbl>,
#> # declination_relative_percent_rank <dbl>, declination_sd <dbl>,
#> # efficiency_gap <dbl>, efficiency_gap_1_dem <dbl>,
#> # efficiency_gap_1_dem_sd <dbl>, efficiency_gap_1_rep <dbl>, …
To capture the outputted figures on the site:
img <- 'man/figures/README-planscore.png'
ps_capture(links, img)
#> https://planscore.org/plan.html?temporary-bd7843f2-9dfa-4c80-9b63-3400e77dab18 screenshot completed
#> [1] "man/figures/README-planscore.png"
knitr::include_graphics(img)