Ari Lamstein

New R Package for Visualizing California Census Tracts

Today I am happy to announce that my newest R package, choroplethrCaCensusTract, is now available on github. The package’s title is a combination of three words:

  1. choroplethr: the package has similar functions and data objects as my package choroplethr. The name choroplethr itself is a combination of the words choropleth map and R programming language.
  2. Ca: an abbreviation of the US State of California.
  3. census Tracts are geographic units used by the US Census Bureau. Tract boundaries do not change very often and normally contain between 1,200 and 8,000 people.

The package helps you visualize data that is aggregated at the level of census tracts in California. It also helps you to work with demographic data from the US Census Bureau that is aggregated at this level.

Example: Population

[code lang=”r”]

# install.packages("devtools")
install_github("[email protected]", "arilamstein")


ca_tract_choropleth(df_pop_ca_tract, title = "2012 Population Estimates\n California Census Tracts", legend = "Population") + coord_map()



Note that you can add any projection to this map by using ggplot2’s coord_map() function. Simply add “+ coord_map()” to the above function call.

Because census tracts normally have less than 8,000 people, it is hard to see the tracts in urban areas on a state-wide map.  We can zoom in on individual counties by using the county_zoom parameter. county_zoom takes a vector of County FIPS Codes.

[code lang=”r”]

# 6075 is the FIPS code for San Francisco County
title = "2012 Population Estimates\n San Francisco Census Tracts",
legend = "Population",
county_zoom = 6075) + coord_map()



I suspect that most people will wonder what the island off the west coast is. It is the Farallon Islands.

Example: Per Capita Income

choroplethrCaCensusTract ships with a data.frame, df_ca_tract_demographics, that has eight demographic variables from the 2013 5-year American Community Survey (ACS).

[code lang=”r”]


## [1] "region"            "total_population"  "percent_white"    
## [4] "percent_black"     "percent_asian"     "percent_hispanic" 
## [7] "per_capita_income" "median_rent"       "median_age"

[code lang=”r”]

df_ca_tract_demographics$value = df_ca_tract_demographics$per_capita_income
title = "2013 San Francisco Census Tracts\n Per Capita Income",
legend = "Dollars",
num_colors = 1,
county_zoom = 6075) + coord_map()



Other Data

You can get the values of the eight variables from df_ca_tract_demographics from other surveys as well. See ?get_ca_tract_demographics.

You can also map data from any table from the ACS that is available thru their API and provides data at the level of California Census Tracts. See ?ca_tract_choropleth_acs.

Ari Lamstein

Ari Lamstein

I currently work as a Staff Data Science Engineer at a marketing analytics consultancy. I have 20 years experience developing software in areas such as data science, web development and video games. I have also worked as a technical trainer and independent consultant.

Thanks for visiting!

Sign up to stay up to date with the latest blog posts: