Task 1 · Spatial Analysis
Where do stops happen?
Stop frequency by SFPD district, revealing which neighborhoods see the highest policing activity. Southern and Ingleside districts lead significantly.
| # |
District |
Code |
Stop Count |
Share of Total |
Relative Volume |
Chart 1 of 3
Stop count by district (bar)
Chart 2 of 3
District share (donut)
Chart 3 of 3
Ranked districts — horizontal bar
Task 2 · Temporal Analysis
When do stops happen?
Stop patterns by hour of day, day of week, and month. Peaks around midnight and the evening commute (5–6 PM) suggest enforcement patterns tied to specific conditions.
| Time Period |
Category |
Stop Count |
% of Segment Total |
Chart 1 of 3
Stops by hour of day (line)
Chart 2 of 3
Stops by day of week
Chart 3 of 3
Stops by month
Tasks 3 & 4 · Outcomes + Demographics
What happens after a stop?
Enforcement outcomes (warning / citation / arrest) broken down by stop reason and by race. BOLO/Warrant stops result in arrests 42% of the time. Black drivers face an arrest rate nearly 3× that of white drivers (2.6% vs 0.9%).
| Stop Reason |
Total Stops |
Warning % |
Citation % |
Arrest % |
Search Hit Rate |
Chart 1 of 3
Outcome breakdown by stop reason (stacked bar)
Chart 2 of 3
Search contraband hit rate by reason
Chart 3 of 3
Arrest rate by race (grouped bar)
Interactive Ideas — M3 / M4
How could these become interactive?
- Leaflet.js heatmap on an actual SF basemap — click a neighborhood to filter all charts below
- Hour-of-day slider: drag a time window to see how district rankings shift at night vs. daytime
- Reason filter: toggle stop reasons on/off to compare outcome distributions side-by-side
- Race × Reason drill-down: select a race group to see which violations they're most stopped for
- Year comparison toggle (2007 vs 2014 data) to see if patterns changed over time
- Search hit rate calculator: input stop count, search rate, hit rate to model expected contraband finds