Last active
March 24, 2020 04:45
-
-
Save mrcnc/8f01aaafe1c0a56eb55d62c071936a53 to your computer and use it in GitHub Desktop.
front end party 2020-03-24 value-by-alpha map
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<title>Front End Party | Value-by-alpha Map</title> | |
<script src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.1.1/build/ol.js"></script> | |
<link | |
rel="stylesheet" | |
href="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.1.1/css/ol.css" | |
type="text/css" | |
/> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.1.0/chroma.min.js"></script> | |
<style> | |
#container { display: flex; } | |
#map { | |
flex: 1; | |
height: 500px; | |
} | |
#colorScale { | |
flex: 1; | |
} | |
.grad-step { | |
display: inline-block; | |
height: 20px; | |
width: 1%; | |
} | |
</style> | |
</head> | |
<body> | |
<div id="container"> | |
<div id="map"/></div> | |
<div id="colorScale"/></div> | |
</div> | |
<script> | |
const turnoutStats = [ | |
{ | |
"parish_name": "Acadia", | |
"total_registered": 39335, | |
"total_voted": 19945, | |
"total_turnout_percentage": 51, | |
"total_registered_democrats": 16859, | |
"total_voted_democrats": 8893, | |
"total_turnout_percentage_democrats": 53, | |
"total_registered_republicans": 12757, | |
"total_voted_republicans": 7788, | |
"total_turnout_percentage_republicans": 61, | |
"total_registered_other": 9719, | |
"total_voted_other": 3264, | |
"total_turnout_percentage_other": 34 | |
}, | |
{ | |
"parish_name": "Allen", | |
"total_registered": 13572, | |
"total_voted": 6284, | |
"total_turnout_percentage": 46, | |
"total_registered_democrats": 6256, | |
"total_voted_democrats": 3112, | |
"total_turnout_percentage_democrats": 50, | |
"total_registered_republicans": 3982, | |
"total_voted_republicans": 2225, | |
"total_turnout_percentage_republicans": 56, | |
"total_registered_other": 3334, | |
"total_voted_other": 947, | |
"total_turnout_percentage_other": 28 | |
}, | |
{ | |
"parish_name": "Ascension", | |
"total_registered": 78214, | |
"total_voted": 40874, | |
"total_turnout_percentage": 52, | |
"total_registered_democrats": 27768, | |
"total_voted_democrats": 16607, | |
"total_turnout_percentage_democrats": 60, | |
"total_registered_republicans": 28651, | |
"total_voted_republicans": 16298, | |
"total_turnout_percentage_republicans": 57, | |
"total_registered_other": 21795, | |
"total_voted_other": 7969, | |
"total_turnout_percentage_other": 37 | |
}, | |
{ | |
"parish_name": "Assumption", | |
"total_registered": 14988, | |
"total_voted": 8743, | |
"total_turnout_percentage": 58, | |
"total_registered_democrats": 8742, | |
"total_voted_democrats": 5549, | |
"total_turnout_percentage_democrats": 63, | |
"total_registered_republicans": 3250, | |
"total_voted_republicans": 1991, | |
"total_turnout_percentage_republicans": 61, | |
"total_registered_other": 2996, | |
"total_voted_other": 1203, | |
"total_turnout_percentage_other": 40 | |
}, | |
{ | |
"parish_name": "Avoyelles", | |
"total_registered": 24395, | |
"total_voted": 13608, | |
"total_turnout_percentage": 56, | |
"total_registered_democrats": 12454, | |
"total_voted_democrats": 7231, | |
"total_turnout_percentage_democrats": 58, | |
"total_registered_republicans": 6098, | |
"total_voted_republicans": 4014, | |
"total_turnout_percentage_republicans": 66, | |
"total_registered_other": 5843, | |
"total_voted_other": 2363, | |
"total_turnout_percentage_other": 40 | |
}, | |
{ | |
"parish_name": "Beauregard", | |
"total_registered": 22441, | |
"total_voted": 11596, | |
"total_turnout_percentage": 52, | |
"total_registered_democrats": 6372, | |
"total_voted_democrats": 3441, | |
"total_turnout_percentage_democrats": 54, | |
"total_registered_republicans": 9036, | |
"total_voted_republicans": 5539, | |
"total_turnout_percentage_republicans": 61, | |
"total_registered_other": 7033, | |
"total_voted_other": 2616, | |
"total_turnout_percentage_other": 37 | |
}, | |
{ | |
"parish_name": "Bienville", | |
"total_registered": 9103, | |
"total_voted": 5548, | |
"total_turnout_percentage": 61, | |
"total_registered_democrats": 4762, | |
"total_voted_democrats": 3073, | |
"total_turnout_percentage_democrats": 65, | |
"total_registered_republicans": 2623, | |
"total_voted_republicans": 1729, | |
"total_turnout_percentage_republicans": 66, | |
"total_registered_other": 1718, | |
"total_voted_other": 746, | |
"total_turnout_percentage_other": 43 | |
}, | |
{ | |
"parish_name": "Bossier", | |
"total_registered": 71999, | |
"total_voted": 36535, | |
"total_turnout_percentage": 51, | |
"total_registered_democrats": 19844, | |
"total_voted_democrats": 10474, | |
"total_turnout_percentage_democrats": 53, | |
"total_registered_republicans": 32367, | |
"total_voted_republicans": 19076, | |
"total_turnout_percentage_republicans": 59, | |
"total_registered_other": 19788, | |
"total_voted_other": 6985, | |
"total_turnout_percentage_other": 35 | |
}, | |
{ | |
"parish_name": "Caddo", | |
"total_registered": 158509, | |
"total_voted": 77535, | |
"total_turnout_percentage": 49, | |
"total_registered_democrats": 75641, | |
"total_voted_democrats": 39718, | |
"total_turnout_percentage_democrats": 53, | |
"total_registered_republicans": 44222, | |
"total_voted_republicans": 25210, | |
"total_turnout_percentage_republicans": 57, | |
"total_registered_other": 38646, | |
"total_voted_other": 12607, | |
"total_turnout_percentage_other": 33 | |
}, | |
{ | |
"parish_name": "Calcasieu", | |
"total_registered": 126986, | |
"total_voted": 56353, | |
"total_turnout_percentage": 44, | |
"total_registered_democrats": 50008, | |
"total_voted_democrats": 24854, | |
"total_turnout_percentage_democrats": 50, | |
"total_registered_republicans": 40514, | |
"total_voted_republicans": 21139, | |
"total_turnout_percentage_republicans": 52, | |
"total_registered_other": 36464, | |
"total_voted_other": 10360, | |
"total_turnout_percentage_other": 28 | |
}, | |
{ | |
"parish_name": "Caldwell", | |
"total_registered": 6450, | |
"total_voted": 3563, | |
"total_turnout_percentage": 55, | |
"total_registered_democrats": 2239, | |
"total_voted_democrats": 1303, | |
"total_turnout_percentage_democrats": 58, | |
"total_registered_republicans": 2565, | |
"total_voted_republicans": 1608, | |
"total_turnout_percentage_republicans": 63, | |
"total_registered_other": 1646, | |
"total_voted_other": 652, | |
"total_turnout_percentage_other": 40 | |
}, | |
{ | |
"parish_name": "Cameron", | |
"total_registered": 5298, | |
"total_voted": 2549, | |
"total_turnout_percentage": 48, | |
"total_registered_democrats": 1934, | |
"total_voted_democrats": 1029, | |
"total_turnout_percentage_democrats": 53, | |
"total_registered_republicans": 1893, | |
"total_voted_republicans": 1050, | |
"total_turnout_percentage_republicans": 55, | |
"total_registered_other": 1471, | |
"total_voted_other": 470, | |
"total_turnout_percentage_other": 32 | |
}, | |
{ | |
"parish_name": "Catahoula", | |
"total_registered": 6796, | |
"total_voted": 4394, | |
"total_turnout_percentage": 65, | |
"total_registered_democrats": 3224, | |
"total_voted_democrats": 2118, | |
"total_turnout_percentage_democrats": 66, | |
"total_registered_republicans": 2137, | |
"total_voted_republicans": 1540, | |
"total_turnout_percentage_republicans": 72, | |
"total_registered_other": 1435, | |
"total_voted_other": 736, | |
"total_turnout_percentage_other": 51 | |
}, | |
{ | |
"parish_name": "Claiborne", | |
"total_registered": 9056, | |
"total_voted": 5700, | |
"total_turnout_percentage": 63, | |
"total_registered_democrats": 4144, | |
"total_voted_democrats": 2589, | |
"total_turnout_percentage_democrats": 62, | |
"total_registered_republicans": 2830, | |
"total_voted_republicans": 2084, | |
"total_turnout_percentage_republicans": 74, | |
"total_registered_other": 2082, | |
"total_voted_other": 1027, | |
"total_turnout_percentage_other": 49 | |
}, | |
{ | |
"parish_name": "Concordia", | |
"total_registered": 12948, | |
"total_voted": 6744, | |
"total_turnout_percentage": 52, | |
"total_registered_democrats": 6156, | |
"total_voted_democrats": 3406, | |
"total_turnout_percentage_democrats": 55, | |
"total_registered_republicans": 3906, | |
"total_voted_republicans": 2260, | |
"total_turnout_percentage_republicans": 58, | |
"total_registered_other": 2886, | |
"total_voted_other": 1078, | |
"total_turnout_percentage_other": 37 | |
}, | |
{ | |
"parish_name": "DeSoto", | |
"total_registered": 19409, | |
"total_voted": 10658, | |
"total_turnout_percentage": 55, | |
"total_registered_democrats": 8614, | |
"total_voted_democrats": 5006, | |
"total_turnout_percentage_democrats": 58, | |
"total_registered_republicans": 6353, | |
"total_voted_republicans": 3847, | |
"total_turnout_percentage_republicans": 61, | |
"total_registered_other": 4442, | |
"total_voted_other": 1805, | |
"total_turnout_percentage_other": 41 | |
}, | |
{ | |
"parish_name": "East Baton Rouge", | |
"total_registered": 288090, | |
"total_voted": 158107, | |
"total_turnout_percentage": 55, | |
"total_registered_democrats": 135806, | |
"total_voted_democrats": 80811, | |
"total_turnout_percentage_democrats": 60, | |
"total_registered_republicans": 79483, | |
"total_voted_republicans": 48153, | |
"total_turnout_percentage_republicans": 61, | |
"total_registered_other": 72801, | |
"total_voted_other": 29143, | |
"total_turnout_percentage_other": 40 | |
}, | |
{ | |
"parish_name": "East Carroll", | |
"total_registered": 5122, | |
"total_voted": 2777, | |
"total_turnout_percentage": 54, | |
"total_registered_democrats": 3434, | |
"total_voted_democrats": 1891, | |
"total_turnout_percentage_democrats": 55, | |
"total_registered_republicans": 765, | |
"total_voted_republicans": 547, | |
"total_turnout_percentage_republicans": 72, | |
"total_registered_other": 923, | |
"total_voted_other": 339, | |
"total_turnout_percentage_other": 37 | |
}, | |
{ | |
"parish_name": "East Feliciana", | |
"total_registered": 14154, | |
"total_voted": 8394, | |
"total_turnout_percentage": 59, | |
"total_registered_democrats": 6784, | |
"total_voted_democrats": 4288, | |
"total_turnout_percentage_democrats": 63, | |
"total_registered_republicans": 4213, | |
"total_voted_republicans": 2735, | |
"total_turnout_percentage_republicans": 65, | |
"total_registered_other": 3157, | |
"total_voted_other": 1371, | |
"total_turnout_percentage_other": 43 | |
}, | |
{ | |
"parish_name": "Evangeline", | |
"total_registered": 21727, | |
"total_voted": 12377, | |
"total_turnout_percentage": 57, | |
"total_registered_democrats": 11151, | |
"total_voted_democrats": 6763, | |
"total_turnout_percentage_democrats": 61, | |
"total_registered_republicans": 5956, | |
"total_voted_republicans": 3766, | |
"total_turnout_percentage_republicans": 63, | |
"total_registered_other": 4620, | |
"total_voted_other": 1848, | |
"total_turnout_percentage_other": 40 | |
}, | |
{ | |
"parish_name": "Franklin", | |
"total_registered": 13765, | |
"total_voted": 7644, | |
"total_turnout_percentage": 56, | |
"total_registered_democrats": 5854, | |
"total_voted_democrats": 3191, | |
"total_turnout_percentage_democrats": 55, | |
"total_registered_republicans": 5048, | |
"total_voted_republicans": 3326, | |
"total_turnout_percentage_republicans": 66, | |
"total_registered_other": 2863, | |
"total_voted_other": 1127, | |
"total_turnout_percentage_other": 39 | |
}, | |
{ | |
"parish_name": "Grant", | |
"total_registered": 12890, | |
"total_voted": 6401, | |
"total_turnout_percentage": 50, | |
"total_registered_democrats": 3880, | |
"total_voted_democrats": 1996, | |
"total_turnout_percentage_democrats": 51, | |
"total_registered_republicans": 5285, | |
"total_voted_republicans": 3080, | |
"total_turnout_percentage_republicans": 58, | |
"total_registered_other": 3725, | |
"total_voted_other": 1325, | |
"total_turnout_percentage_other": 36 | |
}, | |
{ | |
"parish_name": "Iberia", | |
"total_registered": 46889, | |
"total_voted": 24115, | |
"total_turnout_percentage": 51, | |
"total_registered_democrats": 19782, | |
"total_voted_democrats": 10580, | |
"total_turnout_percentage_democrats": 53, | |
"total_registered_republicans": 14758, | |
"total_voted_republicans": 9463, | |
"total_turnout_percentage_republicans": 64, | |
"total_registered_other": 12349, | |
"total_voted_other": 4072, | |
"total_turnout_percentage_other": 33 | |
}, | |
{ | |
"parish_name": "Iberville", | |
"total_registered": 21577, | |
"total_voted": 13186, | |
"total_turnout_percentage": 61, | |
"total_registered_democrats": 13495, | |
"total_voted_democrats": 8834, | |
"total_turnout_percentage_democrats": 65, | |
"total_registered_republicans": 3916, | |
"total_voted_republicans": 2516, | |
"total_turnout_percentage_republicans": 64, | |
"total_registered_other": 4166, | |
"total_voted_other": 1836, | |
"total_turnout_percentage_other": 44 | |
}, | |
{ | |
"parish_name": "Jackson", | |
"total_registered": 9756, | |
"total_voted": 5702, | |
"total_turnout_percentage": 58, | |
"total_registered_democrats": 4061, | |
"total_voted_democrats": 2493, | |
"total_turnout_percentage_democrats": 61, | |
"total_registered_republicans": 3580, | |
"total_voted_republicans": 2354, | |
"total_turnout_percentage_republicans": 66, | |
"total_registered_other": 2115, | |
"total_voted_other": 855, | |
"total_turnout_percentage_other": 40 | |
}, | |
{ | |
"parish_name": "Jefferson", | |
"total_registered": 270357, | |
"total_voted": 127498, | |
"total_turnout_percentage": 47, | |
"total_registered_democrats": 107124, | |
"total_voted_democrats": 55341, | |
"total_turnout_percentage_democrats": 52, | |
"total_registered_republicans": 82829, | |
"total_voted_republicans": 45778, | |
"total_turnout_percentage_republicans": 55, | |
"total_registered_other": 80404, | |
"total_voted_other": 26379, | |
"total_turnout_percentage_other": 33 | |
}, | |
{ | |
"parish_name": "Jefferson Davis", | |
"total_registered": 20785, | |
"total_voted": 9886, | |
"total_turnout_percentage": 48, | |
"total_registered_democrats": 8254, | |
"total_voted_democrats": 4302, | |
"total_turnout_percentage_democrats": 52, | |
"total_registered_republicans": 6554, | |
"total_voted_republicans": 3647, | |
"total_turnout_percentage_republicans": 56, | |
"total_registered_other": 5977, | |
"total_voted_other": 1937, | |
"total_turnout_percentage_other": 32 | |
}, | |
{ | |
"parish_name": "Lafayette", | |
"total_registered": 153705, | |
"total_voted": 78628, | |
"total_turnout_percentage": 51, | |
"total_registered_democrats": 50948, | |
"total_voted_democrats": 27665, | |
"total_turnout_percentage_democrats": 54, | |
"total_registered_republicans": 58959, | |
"total_voted_republicans": 34791, | |
"total_turnout_percentage_republicans": 59, | |
"total_registered_other": 43798, | |
"total_voted_other": 16172, | |
"total_turnout_percentage_other": 37 | |
}, | |
{ | |
"parish_name": "Lafourche", | |
"total_registered": 58668, | |
"total_voted": 29972, | |
"total_turnout_percentage": 51, | |
"total_registered_democrats": 22953, | |
"total_voted_democrats": 12619, | |
"total_turnout_percentage_democrats": 55, | |
"total_registered_republicans": 19315, | |
"total_voted_republicans": 11446, | |
"total_turnout_percentage_republicans": 59, | |
"total_registered_other": 16400, | |
"total_voted_other": 5907, | |
"total_turnout_percentage_other": 36 | |
}, | |
{ | |
"parish_name": "LaSalle", | |
"total_registered": 8965, | |
"total_voted": 6015, | |
"total_turnout_percentage": 67, | |
"total_registered_democrats": 2736, | |
"total_voted_democrats": 1760, | |
"total_turnout_percentage_democrats": 64, | |
"total_registered_republicans": 4186, | |
"total_voted_republicans": 3173, | |
"total_turnout_percentage_republicans": 76, | |
"total_registered_other": 2043, | |
"total_voted_other": 1082, | |
"total_turnout_percentage_other": 53 | |
}, | |
{ | |
"parish_name": "Lincoln", | |
"total_registered": 26604, | |
"total_voted": 13335, | |
"total_turnout_percentage": 50, | |
"total_registered_democrats": 10307, | |
"total_voted_democrats": 5331, | |
"total_turnout_percentage_democrats": 52, | |
"total_registered_republicans": 9485, | |
"total_voted_republicans": 5617, | |
"total_turnout_percentage_republicans": 59, | |
"total_registered_other": 6812, | |
"total_voted_other": 2387, | |
"total_turnout_percentage_other": 35 | |
}, | |
{ | |
"parish_name": "Livingston", | |
"total_registered": 82313, | |
"total_voted": 39984, | |
"total_turnout_percentage": 49, | |
"total_registered_democrats": 19924, | |
"total_voted_democrats": 10587, | |
"total_turnout_percentage_democrats": 53, | |
"total_registered_republicans": 37999, | |
"total_voted_republicans": 21113, | |
"total_turnout_percentage_republicans": 56, | |
"total_registered_other": 24390, | |
"total_voted_other": 8284, | |
"total_turnout_percentage_other": 34 | |
}, | |
{ | |
"parish_name": "Madison", | |
"total_registered": 7591, | |
"total_voted": 4034, | |
"total_turnout_percentage": 53, | |
"total_registered_democrats": 4356, | |
"total_voted_democrats": 2377, | |
"total_turnout_percentage_democrats": 55, | |
"total_registered_republicans": 1502, | |
"total_voted_republicans": 980, | |
"total_turnout_percentage_republicans": 65, | |
"total_registered_other": 1733, | |
"total_voted_other": 677, | |
"total_turnout_percentage_other": 39 | |
}, | |
{ | |
"parish_name": "Morehouse", | |
"total_registered": 18155, | |
"total_voted": 8572, | |
"total_turnout_percentage": 47, | |
"total_registered_democrats": 8843, | |
"total_voted_democrats": 4430, | |
"total_turnout_percentage_democrats": 50, | |
"total_registered_republicans": 5180, | |
"total_voted_republicans": 2891, | |
"total_turnout_percentage_republicans": 56, | |
"total_registered_other": 4132, | |
"total_voted_other": 1251, | |
"total_turnout_percentage_other": 30 | |
}, | |
{ | |
"parish_name": "Natchitoches", | |
"total_registered": 24461, | |
"total_voted": 12441, | |
"total_turnout_percentage": 51, | |
"total_registered_democrats": 11414, | |
"total_voted_democrats": 6081, | |
"total_turnout_percentage_democrats": 53, | |
"total_registered_republicans": 6773, | |
"total_voted_republicans": 4156, | |
"total_turnout_percentage_republicans": 61, | |
"total_registered_other": 6274, | |
"total_voted_other": 2204, | |
"total_turnout_percentage_other": 35 | |
}, | |
{ | |
"parish_name": "Orleans", | |
"total_registered": 259669, | |
"total_voted": 128611, | |
"total_turnout_percentage": 50, | |
"total_registered_democrats": 164890, | |
"total_voted_democrats": 90138, | |
"total_turnout_percentage_democrats": 55, | |
"total_registered_republicans": 26997, | |
"total_voted_republicans": 13537, | |
"total_turnout_percentage_republicans": 50, | |
"total_registered_other": 67782, | |
"total_voted_other": 24936, | |
"total_turnout_percentage_other": 37 | |
}, | |
{ | |
"parish_name": "Ouachita", | |
"total_registered": 102449, | |
"total_voted": 50988, | |
"total_turnout_percentage": 50, | |
"total_registered_democrats": 39495, | |
"total_voted_democrats": 20517, | |
"total_turnout_percentage_democrats": 52, | |
"total_registered_republicans": 36774, | |
"total_voted_republicans": 21449, | |
"total_turnout_percentage_republicans": 58, | |
"total_registered_other": 26180, | |
"total_voted_other": 9022, | |
"total_turnout_percentage_other": 34 | |
}, | |
{ | |
"parish_name": "Plaquemines", | |
"total_registered": 14668, | |
"total_voted": 7261, | |
"total_turnout_percentage": 50, | |
"total_registered_democrats": 5732, | |
"total_voted_democrats": 3133, | |
"total_turnout_percentage_democrats": 55, | |
"total_registered_republicans": 4971, | |
"total_voted_republicans": 2765, | |
"total_turnout_percentage_republicans": 56, | |
"total_registered_other": 3965, | |
"total_voted_other": 1363, | |
"total_turnout_percentage_other": 34 | |
}, | |
{ | |
"parish_name": "Pointe Coupee", | |
"total_registered": 15865, | |
"total_voted": 10051, | |
"total_turnout_percentage": 63, | |
"total_registered_democrats": 8761, | |
"total_voted_democrats": 6033, | |
"total_turnout_percentage_democrats": 69, | |
"total_registered_republicans": 3702, | |
"total_voted_republicans": 2387, | |
"total_turnout_percentage_republicans": 64, | |
"total_registered_other": 3402, | |
"total_voted_other": 1631, | |
"total_turnout_percentage_other": 48 | |
}, | |
{ | |
"parish_name": "Rapides", | |
"total_registered": 83779, | |
"total_voted": 43783, | |
"total_turnout_percentage": 52, | |
"total_registered_democrats": 33430, | |
"total_voted_democrats": 18433, | |
"total_turnout_percentage_democrats": 55, | |
"total_registered_republicans": 28479, | |
"total_voted_republicans": 17344, | |
"total_turnout_percentage_republicans": 61, | |
"total_registered_other": 21870, | |
"total_voted_other": 8006, | |
"total_turnout_percentage_other": 37 | |
}, | |
{ | |
"parish_name": "Red River", | |
"total_registered": 5971, | |
"total_voted": 3615, | |
"total_turnout_percentage": 61, | |
"total_registered_democrats": 3094, | |
"total_voted_democrats": 1971, | |
"total_turnout_percentage_democrats": 64, | |
"total_registered_republicans": 1717, | |
"total_voted_republicans": 1137, | |
"total_turnout_percentage_republicans": 66, | |
"total_registered_other": 1160, | |
"total_voted_other": 507, | |
"total_turnout_percentage_other": 44 | |
}, | |
{ | |
"parish_name": "Richland", | |
"total_registered": 14151, | |
"total_voted": 7490, | |
"total_turnout_percentage": 53, | |
"total_registered_democrats": 5810, | |
"total_voted_democrats": 3286, | |
"total_turnout_percentage_democrats": 57, | |
"total_registered_republicans": 5029, | |
"total_voted_republicans": 2987, | |
"total_turnout_percentage_republicans": 59, | |
"total_registered_other": 3312, | |
"total_voted_other": 1217, | |
"total_turnout_percentage_other": 37 | |
}, | |
{ | |
"parish_name": "Sabine", | |
"total_registered": 14743, | |
"total_voted": 7981, | |
"total_turnout_percentage": 54, | |
"total_registered_democrats": 5504, | |
"total_voted_democrats": 2907, | |
"total_turnout_percentage_democrats": 53, | |
"total_registered_republicans": 5644, | |
"total_voted_republicans": 3646, | |
"total_turnout_percentage_republicans": 65, | |
"total_registered_other": 3595, | |
"total_voted_other": 1428, | |
"total_turnout_percentage_other": 40 | |
}, | |
{ | |
"parish_name": "St. Bernard", | |
"total_registered": 25889, | |
"total_voted": 10348, | |
"total_turnout_percentage": 40, | |
"total_registered_democrats": 11147, | |
"total_voted_democrats": 4979, | |
"total_turnout_percentage_democrats": 45, | |
"total_registered_republicans": 5992, | |
"total_voted_republicans": 2778, | |
"total_turnout_percentage_republicans": 46, | |
"total_registered_other": 8750, | |
"total_voted_other": 2591, | |
"total_turnout_percentage_other": 30 | |
}, | |
{ | |
"parish_name": "St. Charles", | |
"total_registered": 35324, | |
"total_voted": 18600, | |
"total_turnout_percentage": 53, | |
"total_registered_democrats": 13372, | |
"total_voted_democrats": 8111, | |
"total_turnout_percentage_democrats": 61, | |
"total_registered_republicans": 12461, | |
"total_voted_republicans": 7001, | |
"total_turnout_percentage_republicans": 56, | |
"total_registered_other": 9491, | |
"total_voted_other": 3488, | |
"total_turnout_percentage_other": 37 | |
}, | |
{ | |
"parish_name": "St. Helena", | |
"total_registered": 8544, | |
"total_voted": 5307, | |
"total_turnout_percentage": 62, | |
"total_registered_democrats": 5500, | |
"total_voted_democrats": 3631, | |
"total_turnout_percentage_democrats": 66, | |
"total_registered_republicans": 1616, | |
"total_voted_republicans": 1050, | |
"total_turnout_percentage_republicans": 65, | |
"total_registered_other": 1428, | |
"total_voted_other": 626, | |
"total_turnout_percentage_other": 44 | |
}, | |
{ | |
"parish_name": "St. James", | |
"total_registered": 15526, | |
"total_voted": 9791, | |
"total_turnout_percentage": 63, | |
"total_registered_democrats": 10386, | |
"total_voted_democrats": 7131, | |
"total_turnout_percentage_democrats": 69, | |
"total_registered_republicans": 2602, | |
"total_voted_republicans": 1594, | |
"total_turnout_percentage_republicans": 61, | |
"total_registered_other": 2538, | |
"total_voted_other": 1066, | |
"total_turnout_percentage_other": 42 | |
}, | |
{ | |
"parish_name": "St. John", | |
"total_registered": 29937, | |
"total_voted": 15409, | |
"total_turnout_percentage": 51, | |
"total_registered_democrats": 18291, | |
"total_voted_democrats": 10609, | |
"total_turnout_percentage_democrats": 58, | |
"total_registered_republicans": 4768, | |
"total_voted_republicans": 2533, | |
"total_turnout_percentage_republicans": 53, | |
"total_registered_other": 6878, | |
"total_voted_other": 2267, | |
"total_turnout_percentage_other": 33 | |
}, | |
{ | |
"parish_name": "St. Landry", | |
"total_registered": 59325, | |
"total_voted": 30530, | |
"total_turnout_percentage": 51, | |
"total_registered_democrats": 31900, | |
"total_voted_democrats": 17578, | |
"total_turnout_percentage_democrats": 55, | |
"total_registered_republicans": 13857, | |
"total_voted_republicans": 8296, | |
"total_turnout_percentage_republicans": 60, | |
"total_registered_other": 13568, | |
"total_voted_other": 4656, | |
"total_turnout_percentage_other": 34 | |
}, | |
{ | |
"parish_name": "St. Martin", | |
"total_registered": 37185, | |
"total_voted": 20160, | |
"total_turnout_percentage": 54, | |
"total_registered_democrats": 16891, | |
"total_voted_democrats": 9594, | |
"total_turnout_percentage_democrats": 57, | |
"total_registered_republicans": 11157, | |
"total_voted_republicans": 7227, | |
"total_turnout_percentage_republicans": 65, | |
"total_registered_other": 9137, | |
"total_voted_other": 3339, | |
"total_turnout_percentage_other": 37 | |
}, | |
{ | |
"parish_name": "St. Mary", | |
"total_registered": 32865, | |
"total_voted": 16402, | |
"total_turnout_percentage": 50, | |
"total_registered_democrats": 13837, | |
"total_voted_democrats": 7601, | |
"total_turnout_percentage_democrats": 55, | |
"total_registered_republicans": 9585, | |
"total_voted_republicans": 5698, | |
"total_turnout_percentage_republicans": 59, | |
"total_registered_other": 9443, | |
"total_voted_other": 3103, | |
"total_turnout_percentage_other": 33 | |
}, | |
{ | |
"parish_name": "St. Tammany", | |
"total_registered": 176142, | |
"total_voted": 91302, | |
"total_turnout_percentage": 52, | |
"total_registered_democrats": 41164, | |
"total_voted_democrats": 22806, | |
"total_turnout_percentage_democrats": 55, | |
"total_registered_republicans": 82654, | |
"total_voted_republicans": 48420, | |
"total_turnout_percentage_republicans": 59, | |
"total_registered_other": 52324, | |
"total_voted_other": 20076, | |
"total_turnout_percentage_other": 38 | |
}, | |
{ | |
"parish_name": "Tangipahoa", | |
"total_registered": 79937, | |
"total_voted": 39252, | |
"total_turnout_percentage": 49, | |
"total_registered_democrats": 30978, | |
"total_voted_democrats": 16866, | |
"total_turnout_percentage_democrats": 54, | |
"total_registered_republicans": 26185, | |
"total_voted_republicans": 14620, | |
"total_turnout_percentage_republicans": 56, | |
"total_registered_other": 22774, | |
"total_voted_other": 7766, | |
"total_turnout_percentage_other": 34 | |
}, | |
{ | |
"parish_name": "Tensas", | |
"total_registered": 3555, | |
"total_voted": 2107, | |
"total_turnout_percentage": 59, | |
"total_registered_democrats": 2217, | |
"total_voted_democrats": 1353, | |
"total_turnout_percentage_democrats": 61, | |
"total_registered_republicans": 828, | |
"total_voted_republicans": 546, | |
"total_turnout_percentage_republicans": 66, | |
"total_registered_other": 510, | |
"total_voted_other": 208, | |
"total_turnout_percentage_other": 41 | |
}, | |
{ | |
"parish_name": "Terrebonne", | |
"total_registered": 63426, | |
"total_voted": 30509, | |
"total_turnout_percentage": 48, | |
"total_registered_democrats": 20788, | |
"total_voted_democrats": 10808, | |
"total_turnout_percentage_democrats": 52, | |
"total_registered_republicans": 23056, | |
"total_voted_republicans": 13445, | |
"total_turnout_percentage_republicans": 58, | |
"total_registered_other": 19582, | |
"total_voted_other": 6256, | |
"total_turnout_percentage_other": 32 | |
}, | |
{ | |
"parish_name": "Union", | |
"total_registered": 15551, | |
"total_voted": 8043, | |
"total_turnout_percentage": 52, | |
"total_registered_democrats": 5827, | |
"total_voted_democrats": 3059, | |
"total_turnout_percentage_democrats": 52, | |
"total_registered_republicans": 6142, | |
"total_voted_republicans": 3761, | |
"total_turnout_percentage_republicans": 61, | |
"total_registered_other": 3582, | |
"total_voted_other": 1223, | |
"total_turnout_percentage_other": 34 | |
}, | |
{ | |
"parish_name": "Vermilion", | |
"total_registered": 37608, | |
"total_voted": 18889, | |
"total_turnout_percentage": 50, | |
"total_registered_democrats": 15298, | |
"total_voted_democrats": 8084, | |
"total_turnout_percentage_democrats": 53, | |
"total_registered_republicans": 12019, | |
"total_voted_republicans": 7266, | |
"total_turnout_percentage_republicans": 60, | |
"total_registered_other": 10291, | |
"total_voted_other": 3539, | |
"total_turnout_percentage_other": 34 | |
}, | |
{ | |
"parish_name": "Vernon", | |
"total_registered": 24693, | |
"total_voted": 11121, | |
"total_turnout_percentage": 45, | |
"total_registered_democrats": 7650, | |
"total_voted_democrats": 3580, | |
"total_turnout_percentage_democrats": 47, | |
"total_registered_republicans": 9251, | |
"total_voted_republicans": 5107, | |
"total_turnout_percentage_republicans": 55, | |
"total_registered_other": 7792, | |
"total_voted_other": 2434, | |
"total_turnout_percentage_other": 31 | |
}, | |
{ | |
"parish_name": "Washington", | |
"total_registered": 27853, | |
"total_voted": 12978, | |
"total_turnout_percentage": 47, | |
"total_registered_democrats": 12789, | |
"total_voted_democrats": 6412, | |
"total_turnout_percentage_democrats": 50, | |
"total_registered_republicans": 8520, | |
"total_voted_republicans": 4534, | |
"total_turnout_percentage_republicans": 53, | |
"total_registered_other": 6544, | |
"total_voted_other": 2032, | |
"total_turnout_percentage_other": 31 | |
}, | |
{ | |
"parish_name": "Webster", | |
"total_registered": 24505, | |
"total_voted": 13551, | |
"total_turnout_percentage": 55, | |
"total_registered_democrats": 10097, | |
"total_voted_democrats": 5958, | |
"total_turnout_percentage_democrats": 59, | |
"total_registered_republicans": 8398, | |
"total_voted_republicans": 5196, | |
"total_turnout_percentage_republicans": 62, | |
"total_registered_other": 6010, | |
"total_voted_other": 2397, | |
"total_turnout_percentage_other": 40 | |
}, | |
{ | |
"parish_name": "West Baton Rouge", | |
"total_registered": 17120, | |
"total_voted": 11387, | |
"total_turnout_percentage": 67, | |
"total_registered_democrats": 8515, | |
"total_voted_democrats": 6141, | |
"total_turnout_percentage_democrats": 72, | |
"total_registered_republicans": 4453, | |
"total_voted_republicans": 3123, | |
"total_turnout_percentage_republicans": 70, | |
"total_registered_other": 4152, | |
"total_voted_other": 2123, | |
"total_turnout_percentage_other": 51 | |
}, | |
{ | |
"parish_name": "West Carroll", | |
"total_registered": 7229, | |
"total_voted": 4200, | |
"total_turnout_percentage": 58, | |
"total_registered_democrats": 2393, | |
"total_voted_democrats": 1431, | |
"total_turnout_percentage_democrats": 60, | |
"total_registered_republicans": 3061, | |
"total_voted_republicans": 1962, | |
"total_turnout_percentage_republicans": 64, | |
"total_registered_other": 1775, | |
"total_voted_other": 807, | |
"total_turnout_percentage_other": 45 | |
}, | |
{ | |
"parish_name": "West Feliciana", | |
"total_registered": 7782, | |
"total_voted": 4947, | |
"total_turnout_percentage": 64, | |
"total_registered_democrats": 3227, | |
"total_voted_democrats": 2245, | |
"total_turnout_percentage_democrats": 70, | |
"total_registered_republicans": 2808, | |
"total_voted_republicans": 1828, | |
"total_turnout_percentage_republicans": 65, | |
"total_registered_other": 1747, | |
"total_voted_other": 874, | |
"total_turnout_percentage_other": 50 | |
}, | |
{ | |
"parish_name": "Winn", | |
"total_registered": 8842, | |
"total_voted": 4412, | |
"total_turnout_percentage": 50, | |
"total_registered_democrats": 3666, | |
"total_voted_democrats": 1863, | |
"total_turnout_percentage_democrats": 51, | |
"total_registered_republicans": 2797, | |
"total_voted_republicans": 1722, | |
"total_turnout_percentage_republicans": 62, | |
"total_registered_other": 2379, | |
"total_voted_other": 827, | |
"total_turnout_percentage_other": 35 | |
} | |
]; | |
const voteTotals = turnoutStats.map(s => s['total_voted']).sort((a, b) => b - a) | |
const highestParishVoteTotal = voteTotals[0] | |
const lowestParishVoteTotal = voteTotals[voteTotals.length - 1] | |
const numColors = 5; | |
const colorScale = chroma | |
.scale(['red','blue']) | |
// .scale(['red','purple','blue']) | |
// .scale(['#e9002c', '#00429d']) | |
// .scale('RdBu') | |
// .mode('hcl') | |
// .mode('lab') | |
.colors(numColors, format='rgb'); | |
// render color scale on the page | |
const colorScaleNode = document.getElementById("colorScale"); | |
for (let j=0;j<colorScale.length;j++) { | |
for (let i=1;i<=100;i++) { | |
let span = document.createElement("span"); | |
span.className = "grad-step"; | |
span.style.backgroundColor = `rgba(${colorScale[j][0]}, ${colorScale[j][1]}, ${colorScale[j][2]}, ${i/100})`; | |
colorScaleNode.appendChild(span); | |
} | |
} | |
// rescale the value from [0, 1] (aka normalization) | |
const minMaxScale = function (value, min, max) { | |
const range = max - min; | |
const scalePoint = (value - min) / range; | |
return scalePoint.toFixed(2); | |
} | |
// map the scalePoint to one of the colors in the colorScale | |
const scalePointToColor = function (scalePoint) { | |
let maxIndex = numColors - 1; | |
let colorScaleIndex = Math.round(scalePoint * maxIndex) | |
let color = colorScale[colorScaleIndex]; | |
return color; | |
} | |
// choose a color from the color scale based on the feature data | |
const getColor = function (feature) { | |
const stats = getParishStats(feature); | |
const parish = stats['parish_name']; | |
const totalParishVotes = stats['total_voted'] | |
const dems = stats['total_voted_democrats']; | |
const reps = stats['total_voted_republicans']; | |
const all = dems + reps; // ignore other parties when calculating color :/ | |
// do math so values align to color scale | |
let val = Math.max(dems, reps); | |
val = (reps > dems) ? all - val : val; | |
// rescale the value to [0, 1] range | |
const colorScalePoint = minMaxScale(val, 0, all); | |
const color = scalePointToColor(colorScalePoint); | |
// alpha should be [minAlpha, 1] from lowest to highest turnout | |
const minAlpha = 0.01; | |
const alphaScalePoint = minMaxScale(totalParishVotes, lowestParishVoteTotal, highestParishVoteTotal); | |
let alphaScale = parseFloat(alphaScalePoint) + minAlpha; | |
if (alphaScale < minAlpha) { | |
console.log(`not many votes in ${parish}`, alphaScale) | |
alphaScale = minAlpha; | |
} | |
// alphaScale = 1 | |
// console.log(parish, `all=${all} dems=${dems} reps=${reps}`, `${(dems > reps) ? 'dems won' : 'reps won'}`, val, colorScalePoint, color, alphaScale); | |
return [...color, alphaScale] | |
} | |
const computeBaseStyle = function (feature) { | |
const color = getColor(feature); | |
return new ol.style.Style({ | |
stroke: new ol.style.Stroke({ | |
color: [0, 0 ,0, 0.1], | |
width: 1 | |
}), | |
fill: new ol.style.Fill({ | |
color: color | |
}), | |
}); | |
} | |
const parishBoundaries = new ol.source.Vector({ | |
url: "https://raw.githubusercontent.com/TheLens/geographic-data/master/exports/topojson/parishes/parishes-simplified.json", | |
format: new ol.format.TopoJSON({ | |
layers: ["parishes-fullsize"] | |
}) | |
}); | |
const map = new ol.Map({ | |
target: "map", | |
controls: ol.control.defaults({ | |
attribution: false, | |
zoom: false, | |
rotate: false | |
}), | |
interactions: ol.interaction.defaults({ | |
doubleClickZoom: false, | |
dragAndDrop: false, | |
dragPan: false, | |
keyboardPan: false, | |
keyboardZoom: false, | |
mouseWheelZoom: false, | |
pointer: false, | |
select: false | |
}), | |
view: new ol.View({ | |
center: ol.proj.fromLonLat([-91.89, 31.01]), | |
zoom: 7 | |
}), | |
layers: [ | |
new ol.layer.Vector({ | |
source: parishBoundaries, | |
style: computeBaseStyle | |
}) | |
], | |
}); | |
const getParishStats = function (feature) { | |
const stats = turnoutStats.filter(s => { | |
// todo: normalize names in another function | |
if (feature.get('parishname') == "Jefferson Davis"){ | |
return s['parish_name'] == "Jefferson Davis"; | |
} | |
else { | |
// ensure st.john matches st.johnthebaptist | |
// and "La Salle" matches "LaSalle | |
return feature.get('parishname').replace(/\s+/g, '').toLowerCase() | |
.startsWith(s['parish_name'].replace(/\s+/g, '').toLowerCase()); | |
} | |
}); | |
return stats.length > 0 ? stats[0] : null; | |
} | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment