Source data for the mid-decade redistricting map

Source data for the mid-decade redistricting map

../data.csv is the table the map reads: one row per state, with the party that drew the map, its status, and the expected partisan seat shift (exp) and its range across elections (lo, hi). This folder holds the data those numbers come from, so the page and its evidence sit together.

<ST>_map_old.csv / <ST>_map_new.csv

One row per district, one column per statewide election. Each cell is the Democratic share of the two-party vote in that district under that plan: Dem / (Dem + Rep), computed from precinct results disaggregated to districts. _old is the plan in force before the mid-decade redraw, _new the plan that replaced it. The two files for a state always carry the same set of elections.

Precinct results are VEST’s; the plans and the disaggregation are Dave’s Redistricting App. Generated by compare-plans-dra/_DRA_elections.R in the createMaps repository, which writes these files here and into that repo’s mid-decade-redistricting/data/.

How exp, lo, and hi follow from them

For each election column, a district is a Democratic seat when its value exceeds 0.5. That gives a seat count per election under each plan.

Signs in data.csv are oriented toward the state’s drawing party, so a Democratic gerrymander (California, Virginia) is recorded as a positive number for the Democrats rather than a negative one for the Republicans.

Recomputing that way reproduces data.csv exactly:

State Districts Elections exp lo hi
CA 52 12 6.25 3 9
FL 28 13 2.23 1 4
LA 6 16 0.69 0 1
MO 8 19 0.89 0 1
NC 14 27 0.52 -1 1
OH 15 20 0.65 -1 2
SC 7 12 1.00 1 1
TN 9 8 1.00 1 1
TX 38 17 3.29 2 5
UT 4 16 0.94 0 1
VA 11 12 3.08 2 4

Two states here carry no numbers on the map, for different reasons.

South Carolina never passed a new map, so SC_map_new.csv scores a proposal, not a plan that ever existed in law. data.csv records the state as possible / blocked and leaves exp, lo, and hi empty: there is no enacted redraw to attribute a seat shift to. That is not the same as Virginia, which is partisan / blocked — a map did pass there and was then blocked, so its 3.08 / 2 / 4 is a real shift from a real plan, shown struck through. The mid_decade column is what separates the two cases; status alone does not.

PA_map_old.csv and PA_map_new.csv are a separate analysis of Pennsylvania’s 203 state house districts, not a congressional mid-decade redraw; they are kept for reference and are not part of the map.

Relation to ../elections.csv

../elections.csv is what the per-election detail table under the map reads: one row per election per state, giving the seat split under each plan. These files are the layer below it — the district-level shares those seat counts are collapsed from.

Texas and Florida came into elections.csv from democracys-data. The other eight states — California, Louisiana, Missouri, North Carolina, Ohio, Tennessee, Utah, and Virginia — were counted from the files here, applying the same rule (a district is a Democratic seat above 0.5). Every one reproduces the exp, lo, and hi already in data.csv, and Texas and Florida come out the same from either route, which is the check that the two pipelines agree.

elections.csv stores the change as rep_new - rep_old, so a Democratic gerrymander is a negative number there; data.csv orients the same quantity toward whichever party drew the map, so it is positive for California, Utah, and Virginia.

Two gaps are not fillable from this folder. Alabama has values on the map but no district-level files here, so it has no detail table. South Carolina has files but no map value, for the reason above.

redistrict-map.csv

The state-level table the original mapshaper build styled its choropleth from: 2020 census population, whether the redraw was partisan, court-ordered, or possible, its status, and the drawing party, for all fifty states and D.C. (999 and NA mark states with no mid-decade activity.) ../data.csv supersedes it for the web map — it covers only the seventeen states the map labels, and adds the seat-shift columns and the label-offset columns dx/dy — but this is the file _createMaps.sh still joins to the state geometry.

Not copied here

states.json (8.2 MB) in createMaps is the unprojected source geometry. ../states.topojson is the projected, simplified build product the page actually loads, with each state’s guaranteed-inside label anchor baked in, so the source is left in createMaps rather than duplicated into the site.