[go: up one dir, main page]

Skip to content

🗺 Create Dorling Cartograms from Contiguous Region Shapefiles

License

Notifications You must be signed in to change notification settings

hrbrmstr/spdorling

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

spdorling

Create Dorling Cartograms from Contiguous Region Shapefiles

Description

Create Dorling Cartograms from Contiguous Region Shapefiles

What’s Inside The Tin

  • dorling_from_sp: Compute center coordinates, circle radii and Dorling polygons from input polygons and values

The following functions are implemented:

Installation

devtools::install_github("hrbrmstr/spdorling")

Usage

library(spdorling)

# current verison
packageVersion("spdorling")
## [1] '0.1.0'

Lower 48 U.S.A.

library(albersusa) # hrbrmstr/albersusa
library(hrbrthemes)
library(tidyverse)

usa <- albersusa::usa_composite(proj = "laea")
usa <- subset(usa, !(name %in% c("Alaska", "Hawaii", "District of Columbia")))

set.seed(2018)
usa$val <- sample(10000, 48)

dor <- dorling_from_sp(usa, value=usa$val, quiet=FALSE)
## Scale factor of 1 => number of overlaps : 12 
## Scale factor of 0.9795918 => number of overlaps : 15 
## Scale factor of 0.9591837 => number of overlaps : 7 
## Scale factor of 0.9387755 => number of overlaps : 9 
## Scale factor of 0.9183673 => number of overlaps : 8 
## Scale factor of 0.8979592 => number of overlaps : 6 
## Scale factor of 0.877551 => number of overlaps : 0
discs_df <- fortify(dor$discs)

as_data_frame(dor$xy) %>% 
  set_names(c("lng", "lat")) %>% 
  mutate(iso2c = usa$iso_3166_2) -> usa_labs

ggplot() +
  geom_polygon(
    data = discs_df, aes(long, lat, group=group), 
    size=0.125, color="#2b2b2b", fill="#00000000"
  ) +
  geom_text(data = usa_labs, aes(lng, lat, label=iso2c), size=2) +
  coord_fixed() +
  labs(x=NULL, y=NULL) +
  theme_ipsum_rc(grid="") +
  theme(axis.text=element_blank())

Swiss Cantons

library(sp)
library(rgdal)
## rgdal: version: 1.2-18, (SVN revision 718)
##  Geospatial Data Abstraction Library extensions to R successfully loaded
##  Loaded GDAL runtime: GDAL 2.1.3, released 2017/20/01
##  Path to GDAL shared files: /Library/Frameworks/R.framework/Versions/3.5/Resources/library/rgdal/gdal
##  GDAL binary built with GEOS: FALSE 
##  Loaded PROJ.4 runtime: Rel. 4.9.3, 15 August 2016, [PJ_VERSION: 493]
##  Path to PROJ.4 shared files: /Library/Frameworks/R.framework/Versions/3.5/Resources/library/rgdal/proj
##  Linking to sp version: 1.2-7
readOGR(
  system.file("extdat", "swiss-cantons.json", package="spdorling"),
  verbose = FALSE,
  stringsAsFactors = FALSE
) -> cantons

# convert it to equal area
SpatialPolygonsDataFrame(
  spTransform(cantons, CRS("+proj=aea +lat_1=45.96 +lat_2=47.50 +lon_0=8.34")),
  data = cantons@data
) -> cantons

set.seed(2018)
cantons$val <- sample(10000, nrow(cantons@data))

dor <- dorling_from_sp(cantons, value=cantons$val, quiet=FALSE)
## Scale factor of 1 => number of overlaps : 17 
## Scale factor of 0.9795918 => number of overlaps : 5 
## Scale factor of 0.9591837 => number of overlaps : 9 
## Scale factor of 0.9387755 => number of overlaps : 7 
## Scale factor of 0.9183673 => number of overlaps : 15 
## Scale factor of 0.8979592 => number of overlaps : 7 
## Scale factor of 0.877551 => number of overlaps : 8 
## Scale factor of 0.8571429 => number of overlaps : 0
discs_df <- fortify(dor$discs)

as_data_frame(dor$xy) %>% 
  set_names(c("lng", "lat")) %>% 
  mutate(name = cantons$name) -> cantons_labs

ggplot() +
  geom_polygon(
    data = discs_df, aes(long, lat, group=group), 
    size=0.125, color="#2b2b2b", fill="#00000000"
  ) +
  geom_text(data = cantons_labs, aes(lng, lat, label=name), size=2) +
  coord_fixed() +
  labs(x=NULL, y=NULL) +
  theme_ipsum_rc(grid="") +
  theme(axis.text=element_blank())

About

🗺 Create Dorling Cartograms from Contiguous Region Shapefiles

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages