Visualizing Labor Force Trends by County
Understanding the change in local labor forces over the past 20-years
This post includes an interactive data visualization, which is best viewed on a computer or tablet. However, if you must use your phone, at least turn it landscape.
How to use
Observe
First, just observe the visualization.
This visualization is a heat map showing the change in the labor force of each U.S. county over the prior 20-years.
Note the color scale, which you'll find above the map in the "Growth Category" legend. This map uses six "traffic light" colors, with the highest growth counties in deepest green and the highest contraction counties in darkest red.
Highlight
Next, try clicking on one of the categories within the "Growth Category" legend. This will highlight only those U.S. counties in this growth category.
Filter
Next, try changing one of four filters at the top of the visualization:
- Month and Year
- In/out Continental U.S.
- State/Territory
- Rural-Urban Continuum Code (RUCC)
Month and Year changes the end date for the 20-year period shown by the heat map. The visualization defaults to "December 2025," which compares December 2025 to December 2005 for each county to arrive at the percentage change. If you change this field to December 2010, it will calculate the percentage change in the labor force using December 1990 as the base period.
In/out Continental U.S. allows you to toggle between looking at states and territories within the continental U.S., or outside the lower-48 (e.g. Alaska, Hawaii, and Puerto Rico).
State/Territory lets you zoom in on one state within the continental U.S.
Rural-Urban Continuum Code (RUCC) filters counties by their rural/urban classification (as per the USDA ERS). Note that classifications are fixed based on UDSA's 2023 codes and do not shift over time as the dates are changed on the visualization.
Hover
Next, try hovering over any county. Doing so will bring up a tooltip that will give you three pieces of information:
- The exact percent change in the labor force over the past 20-years
- The RUCC classification for the chosen county
- A trend chart showing the labor force back to January 1990
Hovering is essential to truly understand the county's history. For example, you may find when you hover that some counties in "structural decline" actually have labor forces that have started to recover over the past 3-5 years. And then you may find others that have continued to decline over the same period. These are important differences for you to research that can't be ascertained by looking at the map alone. You must hover as well to truly "see" the more nuanced differences between counties.
Highlight and Filter
Lastly, try combining multiple of the above functionalities to learn more from the visualization.
One of the most powerful combinations is highlighting a Growth Category and then changing the Month and Year. For example, try clicking on the "Structural Loss" category, and then change the Month and Year to see how these counties have multiplied over time.
Using multiple functionalities in concert is how the visualization truly comes alive! It's how you can really "see" the viral spread of labor force declines over time.
Methodology
Data joining and cleaning
- First off, the primary database from which all the data in this visualization is based is called the Local Area Unemployment Statistics database. This is published by the BLS monthly and includes detail on the number of employed, unemployed, labor force participation, the size of the labor force, and much more for each area. Regarding "areas," there's way more than just counties in this database - you can get states, MSAs, etc. But I just used counties for the visualization. I would encourage those looking for more detail to read the txt file on the bls.la database.
- Download the following text files from the repository linked above: All data.0 files; area_type; area; area maps, measure, series, and state_region_division.
- Note that the remainder of this section's methodology uses is explained using Tableau Prep.
- Union all data.0 files
- Join the series table on "series_id"
- Join the measure table on "measure_code"
- Join the area_type table on "area_type_code"
- Join the area table on "area_code"
- Join the state_region_division table on "srd_code"
- Create a field called "date" using the following calculated field: makedate([year],int(right(period,2)),1)
- Keep only "Counties and equivalents" for areatype_text
- Create a field called "FIPS" using the following calculated filed: right(left([area_code],7),5)
- Create two "clean step" branches. In one, create a field called "Date Fwd" using the following calculated field: makedate(YEAR([Date])+20,month([Date]),1). This is taking the data from 20-years prior and advancing it by 20-years, which is an essential set up to calculate the 20-year change in the labor force. Change the name of "value" to "value T-20yr"
- Remove all fields from this branch except series_id and value T-20yr
- Left join the time shifted branch (right side) in with the original unaltered branch (left side). Join Date = Date Fwd and series_id = series_id
- Calculate the 20 year change in value by subtracting "value T-20yr" from "value"
- Divide the result of step #16 by "value T-20yr" to get the percent change
- Create the Growth Categories using the following calculated field: IF [Value Pct Change 20yr] >= 0.40 THEN "Hyper-Growth (>40%)" ELSEIF [Value Pct Change 20yr] >= 0.20 THEN "Superstars (20-40%)" ELSEIF [Value Pct Change 20yr] >= 0.10 THEN "Keeping Pace (10-20%)" ELSEIF [Value Pct Change 20yr] >= 0.00 THEN "Below-trend Growth (0-10%)" ELSEIF [Value Pct Change 20yr] >= -0.10 THEN "At-risk Contraction (-10-0%)" ELSE "Structural Loss (<-10%)" END
- Download the RURC database from the USDA ERS website. Make sure you get the "2020 Rural-Urban Commuting Area Codes, census tracts" file. Either excel or csv will work. At this stage, I did some manual work in excel to bring in the nine RURC text descriptions for each County FIPS code. The final table had four fields: County FIPS code, State, County_Name, and Text_Description.
- Create the following calculated field to ensure proper formatting of the FIPS codes: if len(str([FIPS])) = 4 then "0" + str([FIPS]) else str([FIPS]) END
- Remove all fields besides County FIPS code and Text Description
- Remove "October 1, 2025" from the database. This month had no data due to the government shutdown.
- Output the cleaned database!
Create visualization
I'm assuming you know the basics of Tableau in these instructions. Also, I have not provided each and every nuanced step to polish the dashboard. Please contact me with any questions that this methodology does not address.
- To create the map, first make sure that "County FIPS" has geographic role set to "County."
- Drag Longitude to Columns and Latitude to Rows.
- Drag Growth Category to the color card. Choose colors for each of the six categories.
- Create a group from "Srd Text" to separate the states in the continental U.S. from Alaska, Hawaii, and Puerto Rico. Drag this new group to the Filters card.
- Add a filter on Measure Text = labor force
- Add Month and Year, State/Territory, and RUCC as filters.
- Add all the information you want to display in the tooltip to the Detail card.
- Create a new worksheet with a trend chart by bringing Month(Date) to columns and Avg(Value) to the rows. Add a filter Measure Text = labor force. Add this new chart to the tooltip on the map worksheet.
- Add your logo and your own flair!
Support Data That Serves the Public
Data should empower people, not just institutions. Your support helps us create accessible research, visualizations, and tools that uncover economic inequality and inform better decisions.
Donate
Enjoying this post?
Tell others about it.
More articles like this
Fetching Related Posts
There are no other articles tagged with Visualization