Public
Edited
Nov 11, 2022
1 fork
Insert cell
Insert cell
Insert cell
Insert cell
houseResultsRaw = [
/* Possible statuses
- "pending"
- "d_decided"
- "d_leaning"
- "r_leaning"
- "r_decided"
*/
{"district": "HD 1", "status": "r_decided"},
{"district": "HD 2", "status": "r_decided"},
{"district": "HD 3", "status": "r_decided"},
{"district": "HD 4", "status": "r_decided"},
{"district": "HD 5", "status": "d_decided"},
{"district": "HD 6", "status": "r_decided"},
{"district": "HD 7", "status": "r_decided"},
{"district": "HD 8", "status": "r_decided"},
{"district": "HD 9", "status": "r_decided"},
{"district": "HD 10", "status": "r_decided"},
{"district": "HD 11", "status": "r_decided"},
{"district": "HD 12", "status": "r_decided"},
{"district": "HD 13", "status": "r_decided"},
{"district": "HD 14", "status": "r_decided"},
{"district": "HD 15", "status": "pending"}, // recount territory
{"district": "HD 16", "status": "d_decided"},
{"district": "HD 17", "status": "r_decided"},
{"district": "HD 18", "status": "r_decided"},
{"district": "HD 19", "status": "r_decided"},
{"district": "HD 20", "status": "r_decided"},
{"district": "HD 21", "status": "r_decided"},
{"district": "HD 22", "status": "r_decided"},
{"district": "HD 23", "status": "r_decided"},
{"district": "HD 24", "status": "r_decided"},
{"district": "HD 25", "status": "r_decided"},
{"district": "HD 26", "status": "r_decided"},
{"district": "HD 27", "status": "r_decided"},
{"district": "HD 28", "status": "d_decided"},
{"district": "HD 29", "status": "r_decided"},
{"district": "HD 30", "status": "r_decided"},
{"district": "HD 31", "status": "d_decided"},
{"district": "HD 32", "status": "d_decided"},
{"district": "HD 33", "status": "r_decided"},
{"district": "HD 34", "status": "r_decided"},
{"district": "HD 35", "status": "r_decided"},
{"district": "HD 36", "status": "r_decided"},
{"district": "HD 37", "status": "r_decided"},
{"district": "HD 38", "status": "r_decided"},
{"district": "HD 39", "status": "r_decided"},
{"district": "HD 40", "status": "r_decided"},
{"district": "HD 41", "status": "r_decided"},
{"district": "HD 42", "status": "d_decided"},
{"district": "HD 43", "status": "r_decided"},
{"district": "HD 44", "status": "r_decided"},
{"district": "HD 45", "status": "r_decided"},
{"district": "HD 46", "status": "r_decided"},
{"district": "HD 47", "status": "d_decided"},
{"district": "HD 48", "status": "r_leaning"},
{"district": "HD 49", "status": "d_decided"},
{"district": "HD 50", "status": "r_decided"},
{"district": "HD 51", "status": "r_decided"},
{"district": "HD 52", "status": "r_decided"},
{"district": "HD 53", "status": "r_decided"},
{"district": "HD 54", "status": "r_decided"},
{"district": "HD 55", "status": "r_decided"},
{"district": "HD 56", "status": "r_decided"},
{"district": "HD 57", "status": "r_decided"},
{"district": "HD 58", "status": "r_decided"},
{"district": "HD 59", "status": "r_decided"},
{"district": "HD 60", "status": "d_decided"},
{"district": "HD 61", "status": "d_decided"},
{"district": "HD 62", "status": "d_decided"},
{"district": "HD 63", "status": "d_decided"},
{"district": "HD 64", "status": "r_decided"},
{"district": "HD 65", "status": "d_decided"},
{"district": "HD 66", "status": "d_decided"},
{"district": "HD 67", "status": "r_decided"},
{"district": "HD 68", "status": "r_decided"},
{"district": "HD 69", "status": "r_decided"},
{"district": "HD 70", "status": "r_decided"},
{"district": "HD 71", "status": "r_decided"},
{"district": "HD 72", "status": "r_decided"},
{"district": "HD 73", "status": "d_decided"},
{"district": "HD 74", "status": "d_decided"},
{"district": "HD 75", "status": "r_decided"},
{"district": "HD 76", "status": "d_decided"},
{"district": "HD 77", "status": "r_leaning"}, // Close, possible recount
{"district": "HD 78", "status": "r_decided"},
{"district": "HD 79", "status": "d_decided"},
{"district": "HD 80", "status": "r_decided"},
{"district": "HD 81", "status": "d_decided"},
{"district": "HD 82", "status": "d_decided"},
{"district": "HD 83", "status": "d_decided"},
{"district": "HD 84", "status": "d_decided"},
{"district": "HD 85", "status": "r_decided"},
{"district": "HD 86", "status": "r_decided"},
{"district": "HD 87", "status": "r_decided"},
{"district": "HD 88", "status": "r_decided"},
{"district": "HD 89", "status": "d_decided"},
{"district": "HD 90", "status": "d_decided"},
{"district": "HD 91", "status": "d_decided"},
{"district": "HD 92", "status": "r_decided"},
{"district": "HD 93", "status": "r_decided"},
{"district": "HD 94", "status": "d_decided"},
{"district": "HD 95", "status": "d_decided"},
{"district": "HD 96", "status": "d_decided"},
{"district": "HD 97", "status": "r_decided"},
{"district": "HD 98", "status": "d_decided"},
{"district": "HD 99", "status": "d_decided"},
{"district": "HD 100", "status": "d_decided"},
]
Insert cell
Insert cell
senateResultsRaw = [
{"district":"SD 1","status":"r_decided"},
{"district":"SD 2","status":"r_out_of_cycle"},
{"district":"SD 3","status":"r_out_of_cycle"},
{"district":"SD 4","status":"r_decided"},
{"district":"SD 5","status":"r_decided"},
{"district":"SD 6","status":"r_out_of_cycle"},
{"district":"SD 7","status":"r_out_of_cycle"},
{"district":"SD 8","status":"d_decided"},
{"district":"SD 9","status":"r_decided"},
{"district":"SD 10","status":"r_out_of_cycle"},
{"district":"SD 11","status":"r_decided"},
{"district":"SD 12","status":"r_decided"},
{"district":"SD 13","status":"r_decided"},
{"district":"SD 14","status":"r_decided"},
{"district":"SD 15","status":"r_decided"},
{"district":"SD 16","status":"d_out_of_cycle"},
{"district":"SD 17","status":"r_out_of_cycle"},
{"district":"SD 18","status":"r_out_of_cycle"},
{"district":"SD 19","status":"r_decided"},
{"district":"SD 20","status":"r_decided"},
{"district":"SD 21","status":"r_out_of_cycle"},
{"district":"SD 22","status":"r_decided"},
{"district":"SD 23","status":"r_out_of_cycle"},
{"district":"SD 24","status":"d_decided"},
{"district":"SD 25","status":"d_out_of_cycle"},
{"district":"SD 26","status":"r_out_of_cycle"},
{"district":"SD 27","status":"r_decided"},
{"district":"SD 28","status":"r_out_of_cycle"},
{"district":"SD 29","status":"r_decided"},
{"district":"SD 30","status":"r_decided"},
{"district":"SD 31","status":"d_out_of_cycle"},
{"district":"SD 32","status":"d_decided"},
{"district":"SD 33","status":"d_decided"},
{"district":"SD 34","status":"r_decided"},
{"district":"SD 35","status":"r_out_of_cycle"},
{"district":"SD 36","status":"r_out_of_cycle"},
{"district":"SD 37","status":"d_out_of_cycle"},
{"district":"SD 38","status":"d_out_of_cycle"},
{"district":"SD 39","status":"r_decided"},
{"district":"SD 40","status":"r_out_of_cycle"},
{"district":"SD 41","status":"d_decided"},
{"district":"SD 42","status":"d_decided"},
{"district":"SD 43","status":"r_decided"},
{"district":"SD 44","status":"r_out_of_cycle"},
{"district":"SD 45","status":"d_out_of_cycle"},
{"district":"SD 46","status":"d_out_of_cycle"},
{"district":"SD 47","status":"r_out_of_cycle"},
{"district":"SD 48","status":"d_decided"},
{"district":"SD 49","status":"d_decided"},
{"district":"SD 50","status":"d_decided"}
]
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
summarizeDistrictStatuses(senateDistrictsDataMerged.features)
Insert cell
senateDistrictsDataMerged
Insert cell
Insert cell
// houseDistricts = renderedHouseCartogramDims.districts.features.map(d => ({district: d.properties.district, status: "pending"}))
Insert cell
// senateDistricts = renderedSenateCartogramDims.districts.features.map(d => {
// const lastRace = d.properties.legislativeElections.sort((a,b) => b.year - a.year)[0]
// const inCycle2022 = lastRace.year === '2018'
// const incumbentParty = lastRace.winnerParty
// return {
// district: d.properties.district,
// status: inCycle2022 ? "pending" : `${lastRace.winnerParty.toLowerCase()}_out_of_cycle`,
// }
// })
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
embedStyle = `
<style>
.graphic-embed {
width: 100%;
}
.graphic {
font-family: Arial, sans-serif;
font-size: 14px;
display: block;
width: 100%;
max-width: 600px;
margin: auto;
}
.graphic .note {
font-style: italic;
font-size: 0.9em;
}
.graphic .summary-lines {
display: flex;
flex-wrap: wrap;
justify-content: center;
padding: 0.5em;
}
.graphic .summary-row {
margin-right: 0.2em;
}
.graphic .legend {
border: 1px solid #ccc;
padding: 1em;
font-size: 14px;
}
@media (max-width:400px) {
.graphic .legend {
font-size: 12px;
}
}
.graphic svg {
margin-top: 0.5em;
margin-bottom: 0.5em;
width: 100%;
}
.graphic .row {
position: relative;
display: flex;
justify-content: center;

}
.graphic .row .cell {
margin: 0.2em 0.5em;
display: flex;
}
.graphic .row svg {
margin: 0;
margin-right: 0.3em;
width: auto;
display: block;
}
.cartogram-marker text {
pointer-events: none;
}
.cartogram-marker:hover .marker-boundary {
stroke: black;
}
</style>
`
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more