Hover over each reddish county to see the names of the criminals who brought great shame to us all.
I used geocodio to convert city/state pairs to county FIPS. Not all records (1,073 out of 1,209) from the Jan 6 page are represented, as not all have city/state pairs.
Code
Plot =require("@observablehq/plot")us =FileAttachment("static/data/us-counties-10m.json").json();seditious =FileAttachment("static/data/seditious-counties.geojson").json();statemesh = topojson.mesh(us, us.objects.states);states = topojson.feature(us, us.objects.states).features;nation = topojson.feature(us, us.objects.nation);idiots =FileAttachment("static/data/seditious-idiots.json").json()magaRed ="#F00808";Plot.plot({className:"jan6",title:"Seditionist Roundup",subtitle:"A per-U.S. county look at the dangerous idiots who stormed the Capitol on January 6th.",caption:md`Data source: [hrbrmstr's repo](https://github.com/hrbrmstr/capitol-breach-scraper-and-data/); data pulled on 2023-11-12`,projection:"albers-usa",width: width,style: {background:"transparent", },opacity: {label:"Seditionist Concentration",legend:true,color: magaRed,type:"linear", },marks: [ Plot.geo(seditious.features, { fill:"#ffffff",stroke:"#142933",strokeWidth:0.125,strokeOpacity:1 }), Plot.geo(statemesh, { strokeWidth:0.5,strokeOpacity:1,stroke:"#142933" }), Plot.geo(nation, { strokeWidth:1 }), Plot.geo(seditious.features, {fill: magaRed,fillOpacity: d => d.properties.n,strokeWidth:0.125,strokeOpacity:1,stroke:"#142933",tip:true }), Plot.tip( seditious.features, Plot.pointer( Plot.centroid({textAnchor:'middle',title: (d) => {let ret =`${d.properties.name} County:\n${ d.properties.n} insurrectionist${d.properties.n==1?"":"s"}`;if (d.properties.n>0) { ret = ret +"\n\n"+ idiots.filter((e) => d.properties.id=== e.county_fips).map((d) =>`${d.first}${d.last}`).join("\n"); }return ret; } }) ), ) ],});
---code-annotations: hover---# Day 13: Choropleth {.unnumbered}<style>td, h2 {border: none;border-bottom: none!important;}figure {padding-left: 20px;padding-right: 20px;}figure h2 {padding-bottom: 0px;line-height: 1em;}figure h3 {margin-top: 0px;}.jan6-ramp {display: block;background: transparent!important;height: auto;height: intrinsic;max-width: 100%;overflow: visible;}.jan6-ramp text {white-space: pre;}g[aria-label="tip"] {fill: #2b2b2b; }</style>## Shaming The MoronsI do a [daily scrape of the DoJ Jan 6 page](https://github.com/hrbrmstr/capitol-breach-scraper-and-data/) and used that data for today's "Choropleth" entry.Hover over each reddish county to see the names of the criminals who brought great shame to us all.I used [geocodio](https://geocod.io) to convert city/state pairs to county FIPS. Not all records (1,073 out of 1,209) from the Jan 6 page are represented, as not all have city/state pairs.::: {.column-screen}```{ojs}Plot = require("@observablehq/plot")us = FileAttachment("static/data/us-counties-10m.json").json();seditious = FileAttachment("static/data/seditious-counties.geojson").json();statemesh = topojson.mesh(us, us.objects.states);states = topojson.feature(us, us.objects.states).features;nation = topojson.feature(us, us.objects.nation);idiots = FileAttachment("static/data/seditious-idiots.json").json()magaRed = "#F00808";Plot.plot({ className: "jan6", title: "Seditionist Roundup", subtitle: "A per-U.S. county look at the dangerous idiots who stormed the Capitol on January 6th.", caption: md`Data source: [hrbrmstr's repo](https://github.com/hrbrmstr/capitol-breach-scraper-and-data/); data pulled on 2023-11-12`, projection: "albers-usa", width: width, style: { background: "transparent", }, opacity: { label: "Seditionist Concentration", legend: true, color: magaRed, type: "linear", }, marks: [ Plot.geo(seditious.features, { fill: "#ffffff", stroke: "#142933", strokeWidth: 0.125, strokeOpacity: 1 }), Plot.geo(statemesh, { strokeWidth: 0.5, strokeOpacity: 1, stroke: "#142933" }), Plot.geo(nation, { strokeWidth: 1 }), Plot.geo(seditious.features, { fill: magaRed, fillOpacity: d => d.properties.n, strokeWidth: 0.125, strokeOpacity: 1, stroke: "#142933", tip: true }), Plot.tip( seditious.features, Plot.pointer( Plot.centroid({ textAnchor: 'middle', title: (d) => { let ret = `${d.properties.name} County:\n${ d.properties.n } insurrectionist${d.properties.n == 1 ? "" : "s"}`; if (d.properties.n > 0) { ret = ret + "\n\n" + idiots .filter((e) => d.properties.id === e.county_fips) .map((d) => `${d.first} ${d.last}`) .join("\n"); } return ret; } }) ), ) ],});```:::