Data processing, map creation, and chart creation was all done in Python (thanks to geopandas and Plotly). Final layout was created in Illustrator.
Quick note on the methodology. While the high-level democracy indicators are on a scale of 0–1, the societal polarization indicator was originally on a scale of 1–4 (where 4 is no societal polarization, and 1 is high polarization). I normalized this to match the 0–1 scale, and then took the inverse of that scale, so that a higher value meant a higher level of societal polarization.