-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
356 lines (325 loc) · 18.1 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
<!DOCTYPE HTML>
<head>
<meta charset="utf-8">
<meta name='viewport' content='width=device-width, initial-scale=1'>
<!-- Primary Meta Tags -->
<title>2020 Campaign Donors</title>
<meta name="title" content="What Campaign Donor Zipcodes Tell Us About Demographic Divides in Political Parties">
<meta name="description" content="">
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website">
<meta property="og:url" content="https://donor-demographics.samlearner.com">
<meta property="og:title"
content="What Campaign Donor Zipcodes Tell Us About Demographic Divides in Political Parties">
<meta property="og:description" content="">
<meta property="og:image" content="https://donor-demographics.samlearner.com/static/images/display_image.png">
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:url" content="https://donor-demographics.samlearner.com/">
<meta property="twitter:title"
content="What Campaign Donor Zipcodes Tell Us About Demographic Divides in Political Parties">
<meta property="twitter:description" content="">
<meta property="twitter:image" content="https://donor-demographics.samlearner.com/static/images/display_image.png">
<link rel="icon" href='/static/images/favicon.png'>
<!-- Bootstrap Core CSS -->
<link rel="stylesheet" href="static/css/bootstrap.min.css">
<!-- jQuery UI CSS -->
<script src="/static/bower_components/jquery/dist/jquery.min.js"></script>
<link rel="stylesheet" href="/static/css/jquery-ui.min.css">
<link rel="stylesheet" href="/static/css/jquery-ui.structure.min.css">
<link rel="stylesheet" href="/static/css/jquery-ui.theme.min.css">
<link rel="stylesheet" href="/static/css/d3-tip.css">
<link rel="stylesheet" href="/static/css/source-code-pro.css">
<link rel="stylesheet" href="/static/bower_components/chosen/chosen.min.css">
<link rel="stylesheet" href="/static/css/fstdropdown.min.css">
<!-- Fonts -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Playfair+Display">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Merriweather">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lora">
<!-- Custom CSS -->
<link rel="stylesheet" type="text/css" href="static/css/style.css?version=2">
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Inconsolata:wght@300;400;500;600;700;800&display=swap"
rel="stylesheet">
<!-- Font Awesome -->
<script src="https://kit.fontawesome.com/1e59e4c612.js" crossorigin="anonymous"></script>
</head>
<body>
<div class="header">
<div class="main-site-link">
<a href="https://bit.ly/main-project-site">
<button>More Projects</button>
</a>
</div>
</div>
<!-- Annotations -->
<div id="sections">
<div class="mobile-spacer" id="first-spacer"></div>
<section class="step phantom" id="first-annotation">
<div class="body"></div>
</section>
<div class="mobile-spacer"></div>
<section class="step">
<div class="body">
<p>
Here, each campaign with more than 15,000 identified donors is represented by a bubble. The size of
the bubble corresponds with the number of known donors and the color with the candidate's party.
</p>
</div>
</section>
<div class="mobile-spacer"></div>
<section class="step">
<div class="body">
<p>
The campaigns are arranged horizontally according to the percentage of their donors who live in
majority-white zipcodes. Just over 67% of people in the United States live in zipcodes that are more
than 50% non-Hispanic white, though people living in these zipcodes make up roughly 75% of donors.
</p>
<p>
Note that Republican campaigns are grouped more to the right side, indicating that their donors draw
more heavily from majority-white zipcodes. While Democratic campaigns draw less frequently from
these
zipcodes, they also span a wider range. Residents in majority-white zipcode comprise less than
two-thirds of donors for some Democrats, and nearly 90% for others.
</p>
</div>
</section>
<div class="mobile-spacer"></div>
<section class="step">
<div class="body">
<p>
The gap between parties is more stark when looking, instead, at formal education.
</p>
<p>
Here, the campaigns have been arranged vertically according to the percentage of donors from
zipcodes
with high Bachelor’s degree attainment (top 25%). By definition, these make up just 25% of zipcodes,
yet they make up virtually the entire donor base for the campaigns near the top of the chart.
</p>
</div>
</section>
<div class="mobile-spacer"></div>
<section class="step">
<div class="body">
<p>
Looking at both race and formal education at the same time, provides a clear delineation between
Democratic and Republican candidates.
</p>
</div>
</section>
<div class="mobile-spacer"></div>
<section class="step">
<div class="body">
<p>
Donors to the Republican campaigns tend to live more frequently in majority-white zipcodes, and live
less frequently in zipcodes with high Bachelor’s degree attainment.
</p>
</div>
</section>
<div class="mobile-spacer"></div>
<section class="step">
<div class="body">
<p>
For Democratic candidates, it is the opposite. Their donors are often from more racially diverse
zipcodes, and zipcodes with high bachelors degree attainment
</p>
<br>
<p>
Note also that Democratic campaigns are generally clustered less closely than the Republican ones.
</p>
</div>
</section>
<div class="mobile-spacer"></div>
<section class="step">
<div class="body">
<p>
Look, for example, at the gap between donors to Bernie Sanders' campaign, on the left, and Amy
Klobuchar's
campaign, to the right, indicating that Klobuchar's campaign drew many more donors from
majority-white
zipcodes.
</p>
</div>
</section>
<div class="mobile-spacer"></div>
<section class="step">
<div class="body">
<p>
The campaigns of Representatives Ocasio-Cortez, Omar, Tlaib, Pressley, and Khanna are also
clustered together near the left end of the plot, along with 2020 progressive insurgents Cori Bush
and Jamaal Bowman.
</p>
</div>
</section>
<div class="mobile-spacer"></div>
<section class="step">
<div class="body">
<p>
A skeptical reader might wonder how much these patterns are simply due to geography. All else even,
we would expect donors to Steve Bullock's senate campaign in Montana to look different than the
donors to Alexandria Ocasio-Cortez's congressional campaign in the Bronx.
</p>
<p>
To help account for this, the donors have now been filtered to include only those from outside of a
candidate's district or state (for presidential campaigns, nothing has changed). For a few
candidates,
such as Senators Merkley, Cornyn, and Markey, this makes a big difference. By and large, though,
the divides between and within parties look very similar, even with in-district donors excluded.
</p>
</div>
</section>
<div class="mobile-spacer"></div>
<section class="step">
<div class="body">
<p>
Finally, the y-axis has been switched to indicate the percentage of donors who come from high-income
zipcodes (top 25%). These zipcodes produce a very large percentage of campaign contributions overall
(note that the y-axis is clipped at the bottom)
</p>
<p>
While Democratic donors, on average, are more likely to live in high-income zipcodes, the divide
between parties is much more muddled when looking at income level instead of Bachelor’s attainment,
particularly among more major candidates. This supports evidence found in polling that party support
is divided much more by formal education level than by income. Democratic party candidates, however,
span a much wider range, suggesting a Democratic donor’s income level may have a strong impact on
the
kinds of candidates that they support within the party.
</p>
</div>
</section>
<div class="mobile-spacer"></div>
<section class="step phantom">
<div class="body"></div>
</section>
</div>
<!-- Bootstrap grid setup -->
<!-- Load Wheel -->
<div class="loadring-container" style="text-align: center">
<div class="lds-ring" style="margin-top: 30vh;">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<!-- Intro Text Wrapper/Tile -->
<div class="tile-wrapper" id="intro-wrapper" style="visibility: hidden">
<div class="container" id="intro-tile" style="text-align:left;">
<h1><strong>What Campaign Donor Zipcodes Tell Us About Demographic Divides in Political Parties</strong>
</h1>
<br><br>
<p>
More than 18 million donors from across the country contibuted to candidates running for federal office
during the 2020 election cycle, amounting to nearly $7 billion. Online records from the FEC, as well as
the ActBlue and WinRed fundraising platforms provide us with more data than ever about where
small-dollar donations are coming from.
</p>
<br>
<p>
FEC records don't provide demographic information about individual donors directly, but they do provide
a zipcode. And because zipcodes in the United States remain generally <a
href="https://talkpoverty.org/2015/12/17/american-dream-zip-codes-affordable-housing/">segregated</a>,
we can attempt to better understand the donors backing various campaigns by looking at the demographics
of their respective zipcodes. While gender does not vary significantly by geography, race/ethnicity,
education level, and income level often do and these features expose key divides, not just between, but
within parties.
</p>
</div>
</div>
</div>
<div class="downArrow bounce" style="visibility: hidden">
<img width="40" height="40" alt=""
src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjwhRE9DVFlQRSBzdmcgIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nICAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJz48c3ZnIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMyIDMyIiBoZWlnaHQ9IjMycHgiIGlkPSLQodC70L7QuV8xIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAzMiAzMiIgd2lkdGg9IjMycHgiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxwYXRoIGQ9Ik0yNC4yODUsMTEuMjg0TDE2LDE5LjU3MWwtOC4yODUtOC4yODhjLTAuMzk1LTAuMzk1LTEuMDM0LTAuMzk1LTEuNDI5LDAgIGMtMC4zOTQsMC4zOTUtMC4zOTQsMS4wMzUsMCwxLjQzbDguOTk5LDkuMDAybDAsMGwwLDBjMC4zOTQsMC4zOTUsMS4wMzQsMC4zOTUsMS40MjgsMGw4Ljk5OS05LjAwMiAgYzAuMzk0LTAuMzk1LDAuMzk0LTEuMDM2LDAtMS40MzFDMjUuMzE5LDEwLjg4OSwyNC42NzksMTAuODg5LDI0LjI4NSwxMS4yODR6IiBmaWxsPSIjMTIxMzEzIiBpZD0iRXhwYW5kX01vcmUiLz48Zy8+PGcvPjxnLz48Zy8+PGcvPjxnLz48L3N2Zz4=" />
</div>
<!-- Viz Wrapper/Tile -->
<div class="tile-wrapper" id="bubbleplot-wrapper">
<div class="container viz-tile" id="bubbleplot-tile">
<div class="row">
<div class="col-md-1"></div>
<div class="col-md-10 col-sm-12" id="bubbleplot-area"></div>
<div class="col-md-1"></div>
</div>
</div>
</div>
<div class="spacer" style="min-height: 25vh"></div>
<!-- Footer -->
<div class="container footer" style="text-align:left; max-width: 950px; z-index: 200; margin: auto;">
<div class="col-md-1"></div>
<div class="col-md-10">
<hr>
<br>
<p><strong>Visualization by <a href="http://www.samlearner.com/">Sam Learner</a></strong> | <a
target="_blank" href="mailto:learnersd@gmail.com"><img class="icon-img"
src="/static/images/email.svg"></a> | <a target="_blank"
href="https://twitter.com/sam_learner"><img class="icon-img" src="/static/images/twitter.svg"></a> |
<a target="_blank" href="https://github.com/sdl60660"><img class="icon-img"
src="/static/images/github.png"></a></p>
<p>Code and data for this project lives <a target="_blank"
href="https://github.com/sdl60660/2020_campaign_donors">here</a>. You can check out a companion
project on donor overlap between candidates <a target="_blank"
href="https://bit.ly/donor-overlap-direct">here</a>.</p>
<p><strong>Notes</strong></p>
<p>
Contribution data runs through 10/15/2020.
<p>
<p>
Unique donors are determined using a combination of first name,
last name, and zipcode. This creates the possibility of both false positives (two Jane Smiths in the
same zipcode) and false negatives (Jonathan Smith sometimes donates as Jon Smith, or Jon Smith moves
homes during the election cycle). Others who have worked with donor data sometimes require a matching
employer name as well. This creates a very small chance of a false positive (it's very unlikely that
there are two Jane Smiths living in the same zipcode with the same employer), but creates many more
false
negatives (Jon Smith might change jobs mid-election cycle or he might mark his employer as "Smith High
School"
on one donation and "Smith H.S." on another). On balance, when looking at donor overlap, I decided that
requiring a matching employer was too stringent of a requirement and would lead to missing too many
donor overlaps. As it is, the analysis very likely underrepresents the amount of overlap due to false
negatives,
but it misses them uniformly, across candidates.
<p>
<p>
The use of the WinRed fundraising platform among Republican candidates is relatively new and still
less prevalent than the ActBlue platform among Democratic candidates. Since much of the data regarding
smaller-money donors (<$200) comes from the platforms' filings, GOP candidates generally have fewer <i>
identified</i> donors than Democratic candidates. Even among candidates who have adopted these
platforms,
many small transactions take place outside and the campaigns are only required to report
contributions
from donors who give more at least $200 in aggregate. This means we don't have a true donor count
for any
campaign, but we can generally get much closer for Democratic ones.
</p>
<br>
<p><strong>Sources</strong></p>
<p>
FEC, ProPublica (for itemized <a
href="https://projects.propublica.org/itemizer/committee/C00401224/2020">ActBlue</a>, <a
href="https://projects.propublica.org/itemizer/committee/C00694323/2020">WinRed</a> receipts)
</p>
<p>Last Updated: November 2020</p>
</div>
<div class="col-md-1"></div>
</div>
<!-- External JS Libraries -->
<script src="/static/js/bootstrap.min.js"></script>
<script src="/static/bower_components/jquery-ui/jquery-ui.min.js"></script>
<script src="/static/bower_components/chosen/chosen.jquery.min.js"></script>
<script src="/static/js/d3.min.js"></script>
<script src="/static/js/d3-tip.js"></script>
<script src="/static/js/scroller.js"></script>
<script type="text/javascript"
src="//cdnjs.cloudflare.com/ajax/libs/jqueryui-touch-punch/0.2.3/jquery.ui.touch-punch.min.js"></script>
<script src="/static/js/fstdropdown.min.js"></script>
<script src="static/js/albers-usa-pr.js"></script>
<!--<script src="static/js/d3plus.full.min.js"></script>-->
<!-- Custom JS -->
<script src="/static/js/utils.js"></script>
<script src="/static/js/beeswarm.js"></script>
<script src="/static/js/bubbleplot.js"></script>
<script src="/static/js/nodelink.js"></script>
<script src="/static/js/main.js"></script>
</body>
</html>