Note: Below are election day polling places. For early voting (October 20-30) and ballot drop box locations, go to iwillvote.com

The Elections Commission and Municipal Clerks are generally working hard and earnestly to help people vote with too few resources, and resources are unevenly distributed, and a rapidly changing legal environment where groups fight to make it easier or harder for people to vote.

Polling Places from the Wisconsin Elections Commission

# UPDATE THIS IF A NEW FILE IS POSTED! 
file <- "Polling Place Locations - 2020 General Election Updated 10-21-2020.xlsx"

official_locations <- readxl::read_xlsx(here::here("data", file))

date <- "10-21-2020"

This analysis uses the “Polling Place Locations - 2020 General Election Updated 10-21-2020.xlsx” data posted on 10-21-2020. Here are the current files posted on https://elections.wi.gov/node/6976:

# polling locations posted on website
html <- read_html("https://elections.wi.gov/node/6976") %>%
  html_nodes("a") 

files <- tibble(file = html_text(html),
                link = html_attr(html, "href")) %>% 
  filter(str_detect(file, "xls|csv")) 
                
kable(files) %>% 
  kable_styling() %>% 
  scroll_box()
file link
Polling Place Locations - 2020 General Election Updated 10-21-2020.xlsx https://elections.wi.gov/sites/elections.wi.gov/files/2020-10/Polling%20Place%20Locations%20-%202020%20General%20Election%20Updated%2010-21-2020.xlsx
2020 General Election Referendums Update 091820.xlsx https://elections.wi.gov/sites/elections.wi.gov/files/2020-10/2020%20General%20Election%20Referendums%20Update%20091820.xlsx

Changes from the August Primary Election

old_locations <- readxl::read_xlsx(here::here("data", "PPL 2020 Partisan Primary 2.xlsx")) %>% 
  select(County, Muni, ReportingUnit, PollingPlaceName, PollingPlaceAddress, Longitude, Latitude)

# a function to split out wards
split <- function(ward){
  
  min = str_extract(ward, "[0-9]*") %>% 
           as.numeric()
  
  max = str_extract(ward, "-[0-9]*") %>% 
           as.numeric() %>% abs()
  
  full_seq(c(min,
             max),
           1) %>%
    str_c(collapse = ",") 
}

# split out wards
split_wards <- . %>%
  mutate_if(is.character, str_to_upper) %>% 
  mutate(ward = str_extract(ReportingUnit, "[1-9].*") %>% 
           # split on commas in wards
           str_split(",")) %>% 
  unnest(ward) %>% 
  # remove any letters
  mutate(ward = ward %>% str_remove("[A-z]")) %>% 
  # make a sequence of wards
  mutate(ward_seq = map_chr(ward, possibly(split, otherwise = NA)),
         ward = coalesce(ward_seq, ward) %>% 
           str_split(",")) %>% 
  unnest(ward) %>% 
  mutate_if(is.character, str_to_title) %>%
  mutate(County = str_remove(County, " County") %>% str_remove("\\.")) %>%
  mutate(ReportingUnit = paste("Ward ", ward)) %>% 
  ungroup() %>% 
  select(-ward_seq)


# apply function to old and new polling locations
official <- official_locations %>% split_wards()
old <- old_locations %>% split_wards()

# diff between old and new polling locations
diff <- anti_join(official, old, 
                  by = c("County", "Muni", "ReportingUnit", 
                         "ward", "PollingPlaceAddress")) %>%
  left_join(old, 
            by = c("County", "Muni", "ReportingUnit", "ward"),
            suffix = c(".General", ".Primary"))

# save most recent split data 
write_csv(official, here("data", paste("WEC" , date, "by ward.csv")))
# save most recent diff data 
write_csv(diff, here("data", paste("WEC" , date, "by ward new.csv")))

# calculate the total and net number of changes
diff %<>% 
  group_by(County)%>% 
  mutate(changes = length(unique(PollingPlaceAddress.General)),
         net = changes - length(unique(PollingPlaceAddress.Primary))) 

# simplify polling place names + addresses 
diff %<>% mutate(General = str_c(PollingPlaceName.General, 
                                 PollingPlaceAddress.General, 
                                 sep = ", "),
                 Primary = str_c(PollingPlaceName.Primary, 
                                 PollingPlaceAddress.Primary, 
                                 sep = ", "))
wi <- map_data("county", "wisconsin") %>% 
  mutate(County = str_to_title(subregion) ) %>% 
  group_by(subregion) %>%
  # Find the center of each subregion
  mutate(center_lat = mean(range(lat) ),
         center_long = mean(range(long) ) )

wi  %<>% 
  # add total and net changes to map data
  left_join(diff %>% 
              select(County, Muni, PollingPlaceAddress.General, changes, net) ) %>% 
  # append polling location points 
  full_join(diff %>% mutate(group = NA)) %>% 
  mutate(changes = changes %>% replace_na(0),
         net = net %>% replace_na(0)) 

# plot changes 
wi %>% 
  ggplot( ) +
  aes(x = long, y = lat, group = group, fill = factor(changes)) +
  geom_polygon(color = "white") +
  geom_point(aes(x = Longitude.Primary, 
                 y = Latitude.Primary), 
             color = "Red", alpha = .5) +
  geom_point(aes(x = Longitude.General, 
                 y = Latitude.General), 
             color = "Green", shape = "+", size = 5, alpha = .5) + 
  # label counties at their center
  geom_text( aes(x = center_long, y = center_lat, label = County), 
             size = 2, angle = 45, check_overlap = T, color = "white") +
  theme_void() + 
  labs(fill = "Polling Place\nAddresses Changed\nper County") +
  scale_fill_manual(values = colorRampPalette(c("#6BAED6", "#08306B"))(14))

New polling locations are green. Removed locations are red. Brighter points mean that more Wards moved to or from that polling location.

These data have a few errors. For example, red dots in Rusk and Jackson counties are the result of latitude or longitude typos, but these points are mostly correct. A few of these “changes” are the result of errors in the Elections Commission’s August file. For example, the polling location addresses for the Town of Dewey and Town of Sharon are simply incorrect in the August Primary Election file.

# net 
wi %>% 
ggplot() +
  aes(x = long, y = lat, group = group, fill = factor(net)) + 
  geom_polygon(color = "white") +
  geom_point(aes(x = Longitude.Primary, 
                 y = Latitude.Primary), 
             color = "Red", alpha = .5) +
  geom_point(aes(x = Longitude.General, 
                 y = Latitude.General), 
             color = "Green", shape = "+", size = 5, alpha = .5) + 
  geom_text( aes(x = center_long, y = center_lat, label = County), 
             size = 2, angle = 45, check_overlap = T, color = "white") +
  theme_void() + 
  labs(fill = "Net Polling Places\nAdded per County") +
  scale_fill_brewer(direction = -1) 

Green Bay (Brown County) and Burlington (Racine County) now have even fewer polling places than they did for the August Primary election.

On September 15th, Green Bay’s City Council voted to consolidate Wards 6, 7, 9, & 14 (who voted at Danz Elementry in the August Primary) and Wards 22 & 23 (who voted at Curative Connections). These Wards now all vote at the Bay Beach Amusement Park. Danz Elementary is 68% Latinx and 85% economically disadvantaged. By law, polling places may not be removed within 60 days of a general election. Green bay has received grants to keep polls open but still has just over half of its usual number of polling places.

Burlington Wards 1-4 voted at Cross Lutheran Church in the Primary. They now vote with Wards 5-8 at the Veterans Memorial Building.

# table of changes 
diff %>% 
  ungroup( ) %>%
  group_by(County, Muni, General, Primary) %>% 
  summarise(Ward = paste(County, Muni, "Ward", 
                         paste(ward, collapse = ", "),
                         sep = ", ")) %>%
  ungroup() %>% 
  select(Ward, Primary, General) %>%  
  distinct() %>% 
  knitr::kable() %>% 
  kable_styling() %>% 
  scroll_box(height = "500px")
Ward Primary General
Adams, Town Of Colburn, Ward, 1 Richfield Town Hall, 1602 County Road G, Coloma, Wi 54930 Colburn Town Hall, 198 County Road C, Hancock, Wi 54943
Ashland, City Of Ashland, Ward, 6, 7, 8, 9, 10, 11 Wisconsin Indianhead Technical College-Ashland, 2100 Beaser Ave, Ashland, Wi 54806 Bretting Community Center, 400 4th Ave W, Ashland, Wi 54806-1565
Bayfield, City Of Ashland, Ward, 12 Wisconsin Indianhead Technical College-Ashland, 2100 Beaser Ave, Ashland, Wi 54806 Bretting Community Center, 400 4th Ave W, Ashland, Wi 54806-1565
Brown, City Of De Pere, Ward, 13, 14, 15 De Pere Community Center, 600 Grant St, De Pere, Wi 54115-1318 Saint Mark Lutheran Church, 2066 Lawrence Dr, De Pere, Wi 54115-9421
Brown, City Of De Pere, Ward, 6, 7, 8, 9, 18 First United Presbyterian Church, 605 N Webster Ave, De Pere, Wi 54115-3430 Swan Club, 875 Heritage Rd, De Pere, Wi 54115
Brown, City Of Green Bay, Ward, 22, 23 Curative Connections, 2900 Curry Ln, Green Bay, Wi 54311-5857 Bay Beach Amusement Park, 1313 Bay Beach Rd, Green Bay, Wi 54302
Brown, City Of Green Bay, Ward, 6, 7, 9, 14 Danz Elementary School, 2130 Basten St, Green Bay, Wi 54302-3640 Bay Beach Amusement Park, 1313 Bay Beach Rd, Green Bay, Wi 54302
Brown, City Of Green Bay, Ward, 25, 36, 37, 39, 40 Keller Elementary School, 1806 Bond St, Green Bay, Wi 54303-4604 Johnsonville Tailgate Village, 1265 Lombardi Ave, Green Bay, Wi 54304
Brown, Town Of Holland, Ward, 1, 2 Holland Town Hall, 1671 Hill Rd, Greenleaf, Wi 54126 Vanabel’s Of Hollandtown, 8108 County Road D, Kaukauna, Wi 54130
Brown, Village Of Suamico, Ward, 1, 2, 3, 4, 5, 6, 7, 8 Suamico Municipal Services Center, 12781 Velp Ave, Suamico, Wi 54313-8030 Urban Edge (Previously The Marq Building, Next To Shopko), 2310 Lineville Rd, Suamico, Wi 54313
Buffalo, Town Of Mondovi, Ward, 1 Mondovi City Hall - Chambers, 156 S Franklin St, Mondovi, Wi 54755-1514 Central Lutheran Church, 221 W Main St, Mondovi, Wi 54755
Calumet, Village Of Harrison, Ward, 3, 4, 17, 18, 11, 12, 13 Harrison Municipal Building, W5298 Hwy 114, Menasha, Wi 54952 Waverly Beach, N8770 Firelane 1, Menasha, Wi 54952
Columbia, City Of Lodi, Ward, 1, 2, 3, 4, 5, 6 Lodi City Hall, 130 S Main St, Lodi, Wi 53555-1119 United Methodist Church, 130 Locust, Lodi, Wi 53555
Columbia, Town Of Lewiston, Ward, 1, 2 Lewiston Elementary School, W11195 Highway 127, Portage, Wi 53901 Lewiston Elementary School, W11195 State Road 127, Portage, Wi 53901
Dane, City Of Fitchburg, Ward, 1, 2, 3, 4 Marketplace Fire Station, 2931 Marketplace Dr, Fitchburg, Wi 53719 Little John’s Restaurant, 5302 Verona Rd, Fitchburg, Wi 53711
Dane, City Of Madison, Ward, 107, 127, 150 Olson Elementary School, 801 Redan Dr, Verona, Wi 53593 Blackhawk Church, 9620 Brader Way, Middleton, Wi 53562-9296
Dane, City Of Madison, Ward, 56 Uw-Madison Memorial Library, 728 State St, Madison, Wi 53706-1418 Chazen Museum Of Art, 750 University Ave, Madison, Wi 53706
Dane, City Of Madison, Ward, 65 Wingra School, 718 Gilmore St, Madison, Wi 53711-1995 Edgewood College Rennebohm Library, 959 Edgewood College Dr, Madison, Wi 53711
Dane, City Of Madison, Ward, 67 Uw Welcome Center And Visitor Information, 21 N Park St, Madison, Wi 53715 Faith Community Bible Church, 3 N Park St, Madison, Wi 53715
Dane, City Of Madison, Ward, 92 Meadowridge Library, 5726 Raymond Rd, Madison, Wi 53711-4232 Falk Elementary, 6323 Woodington Way, Madison, Wi 53711-3162
Dane, City Of Madison, Ward, 90, 104, 117, 141 University Research Park Accelerator Building, 5602 Research Park Blvd, Madison, Wi 53719 Heritage Square, 716 S Whitney Way, Madison, Wi 53711
Dane, City Of Madison, Ward, 47 Pyle Center, 702 Langdon St, Madison, Wi 53706 Hillel At The University Of Wisconsin, 611 Langdon St, Madison, Wi 53703-1103
Dane, City Of Madison, Ward, 105, 154 Olson Elementary School, 801 Redan Dr, Verona, Wi 53593 Holy Name Heights, 702 S High Point Rd, Madison, Wi 53719-3522
Dane, City Of Madison, Ward, 152 Warner Park Community Recreation Center, 1625 Northport Dr, Madison, Wi 53704-2300 Lakeview Lutheran Church, 4001 Mandrake Rd, Madison, Wi 53704
Dane, City Of Madison, Ward, 33, 34 Warner Park Shelter, 1625 Northport Dr, Madison, Wi 53704-2300 Lakeview Lutheran Church, 4001 Mandrake Rd, Madison, Wi 53704
Dane, City Of Madison, Ward, 51 Madison Central Library, 201 W Mifflin St, Madison, Wi 53703-2511 Madison Senior Center, 330 W Mifflin St, Madison, Wi 53703-2514
Dane, City Of Madison, Ward, 7 Lake Edge United Church Of Christ, 4200 Buckeye Rd, Madison, Wi 53716 Messiah Lutheran Church, 5202 Cottage Grove Rd, Madison, Wi 53716
Dane, City Of Madison, Ward, 50, 54 Madison Senior Center, 330 W Mifflin St, Madison, Wi 53703-2514 Nicholas Recreation Center, 797 W Dayton St, Madison, Wi 53715
Dane, City Of Madison, Ward, 55 Union South, 1308 W Dayton St, Madison, Wi 53715 Nicholas Recreation Center, 797 W Dayton St, Madison, Wi 53715
Dane, City Of Madison, Ward, 79 Sequoya Library, 4340 Tokay Blvd, Madison, Wi 53711-1567 Odana Hills Golf Course, 4635 Odana Rd, Madison, Wi 53711-1333
Dane, City Of Madison, Ward, 106, 125, 137, 140, 151 Blackhawk Church, 9620 Brader Way, Middleton, Wi 53562-9296 Olson Elementary School, 801 Redan Dr, Verona, Wi 53593
Dane, City Of Madison, Ward, 49 Ian’s Pizza On State, 100 State St, Madison, Wi 53703-2573 Orpheum Theater, 216 State St, Madison, Wi 53703
Dane, City Of Madison, Ward, 57 Uw-Madison Memorial Library, 728 State St, Madison, Wi 53706-1418 The University Club, 803 State St, Madison, Wi 53703-1019
Dane, City Of Madison, Ward, 58 Union South, 1308 W Dayton St, Madison, Wi 53715 Uw Memorial Union, 800 Langdon St, Madison, Wi 53706-1419
Dane, City Of Madison, Ward, 59, 147 Union South, 1308 W Dayton St, Madison, Wi 53715 Wisconsin Energy Institute, 1552 University Ave, Madison, Wi 53726
Dane, City Of Madison, Ward, 46 Gates Of Heaven, 302 E Gorham St, Madison, Wi 53703 Wisconsin Masonic Center, 301 Wisconsin Ave, Madison, Wi 53703
Dane, City Of Monona, Ward, 1, 2, 3, 4, 5 Monona Community Center, 1011 Nichols Rd, Monona, Wi 53716-2530 Saint Stephens Lutheran Church, 5700 Pheasant Hill Rd, Monona, Wi 53716-3118
Dane, Town Of Cottage Grove, Ward, 1, 2, 4, 5, 7 Cottage Grove Town Hall, 4058 County Road N, Cottage Grove, Wi 53527-9503 Cottage Grove Town Garage, 4062 County Highway N, Cottage Grove, Wi 53527
Dane, Village Of Deforest, Ward, 23 NA De Forest Village Hall, 120 S Stevenson St, De Forest, Wi 53532
Dodge, City Of Mayville, Ward, 1, 2, 3, 4, 5, 6, 7, 8 Mayville City Hall, 15 S School St, Mayville, Wi 53050-1656 Mayville Park Pavilion, 475 Park St, Mayville, Wi 53050
Dodge, Village Of Theresa, Ward, 1, 2, 3 Theresa Elementary School, 422 S Milwaukee St, Theresa, Wi 53091 Theresa Fire Department, 302 Depot Rd, Theresa, Wi 53091
Dunn, City Of Menomonie, Ward, 3, 4, 5, 7 Leisure Services Center, 1412 6th St E, Menomonie, Wi 54751-3331 Uw Stout - Multi-Purpose Room #50, 220 13th Ave E, Menomonie, Wi 54751
Dunn, Town Of Peru, Ward, 1 Rock Creek Town Hall, N995 County Road H, Mondovi, Wi 54755-6823 Peru Town Hall, E7209 160th Ave, Mondovi, Wi 54755
Dunn, Village Of Downing, Ward, 1 Luepke Cabinet Shop, 406 Main St, Downing, Wi 54734-9497 Village Of Downing Village Hall, 402 Main St, Downing, Wi 54734
Eau Claire, City Of Eau Claire, Ward, 80 NA Calvary Baptist Church, 3036 Epiphany Ln, Eau Claire, Wi 54703
Eau Claire, City Of Eau Claire, Ward, 81 NA Cedarcreek Community Church, 3520 Eastwind Dr, Eau Claire, Wi 54701-3120
Eau Claire, City Of Eau Claire, Ward, 10, 47, 54, 76 Messiah Lutheran Church, 2015 N Hastings Way, Eau Claire, Wi 54703-1753 Hope Lutheran Church, 2226 Eddy Ln, Eau Claire, Wi 54703
Fond Du Lac, City Of Fond Du Lac, Ward, 28 Eagles Club, 515 N Park Ave, Fond Du Lac, Wi 54935 Lakeside Park Pavilion, 71 Promen Dr, Fond Du Lac, Wi 54935
Forest, Town Of Nashville, Ward, 3 Nashville Town Hall, 4265 State Highway 55, Crandon, Wi 54520 Nashville Community Center And Town Offices, 1038 County Road Q, Pickerel, Wi 54465-0106
Forest, Town Of Nashville, Ward, 1, 2 Nashville Community Center And Town Offices, 1038 County Road Q, Pickerel, Wi 54465-0106 Nashville Town Hall, 4265 State Highway 55, Crandon, Wi 54520
Grant, City Of Platteville, Ward, 5, 6 Broske Center, 1155 N 2nd St, Platteville, Wi 53818 Ullsvik Hall, 30 S Hickory St, Platteville, Wi 53818
Grant, Town Of Glen Haven, Ward, 1 Glen Haven Town Hall, 8819 Fourth Street, Glen Haven, Wi 53810 Town Of Glen Haven Townhall, 8744 County Road V, Glen Haven, Wi 53810
Grant, Village Of Potosi, Ward, 1 Potosi Village Hall, 105 N Main St, Potosi, Wi 53820-9709 Holiday Gardens Event Center, 101 Brewery Hollow Rd, Potosi, Wi 53820
Green, City Of Brodhead, Ward, 1, 2, 3, 4, 5, 6 Brodhead City Hall, 1111 W 2nd Ave, Brodhead, Wi 53520-1426 Brodhead Fire Station, 1100 W 3rd Ave, Brodhead, Wi 53520
Green, City Of Monroe, Ward, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Monroe Community Center, 1110 18th Ave, Monroe, Wi 53566-1850 Monroe Fire Department - Station #2 Downtown, 1803 12th Street, Monroe, Wi 53566
Green, Town Of Adams, Ward, 1 Adams Town Hall, N5705 Biggs Rd, Argyle, Wi 53504 Adams Town Hall, N5723 Biggs Rd, Argyle, Wi 53504
Green, Town Of Exeter, Ward, 1, 2, 3, 4 Exeter Town Hall, W2998 Hwy 92, Belleville, Wi 53508 St Mary Church Hall, 221 Frederick St, Belleville, Wi 53508
Green, Village Of New Glarus, Ward, 1, 2, 3, 4 New Glarus Village Hall, 319 2nd St, New Glarus, Wi 53574-9338 New Glarus Fire Department, 218 4th Ave, New Glarus, Wi 53574
Jackson, Town Of Manchester, Ward, 1 Manchester Town Hall, W9757 County Road O, Black River Falls, Wi 54615-6818 Manchester Town Hall, N2870 Garage Rd, Black River Falls, Wi 54615
Jefferson, City Of Whitewater, Ward, 12 Downtown Whitewater Armory, 146 W North St, Whitewater, Wi 53190 Uww Kachel Field House, 800 W Main St, Whitewater, Wi 53190-1705
Jefferson, Town Of Waterloo, Ward, 1 Waterloo Town Hall, N8193 N8193 State Road 89, Waterloo, Wi 53594-9128 Waterloo Town Hall, N8193 State Road 89, Waterloo, Wi 53594-9128
Kenosha, City Of Kenosha, Ward, 116 NA Moose Lodge, 3003 30th Ave, Kenosha, Wi 53144-1624
Kenosha, Village Of Pleasant Prairie, Ward, 13, 14 Addison Of Pleasant Prairie, 9651 Prairie Ridge Blvd, Pleasant Prairie, Wi 53158 Recplex, 9900 Terwall Ter, Pleasant Prairie, Wi 53158-2222
Kenosha, Village Of Salem Lakes, Ward, 11, 12, 13 Salem Lakes Village Hall, 9814 Antioch Rd, Salem, Wi 53168-9340 Silver Lake Village Hall, 113 S 1st St, Silver Lake, Wi 53170-1724
Kenosha, Village Of Salem Lakes, Ward, 6, 7, 8, 9 Salem Lakes Village Hall, 9814 Antioch Rd, Salem, Wi 53168-9340 Wilmot Fire Station, 30400 Wilmot Rd, Wilmot, Wi 53192
Kenosha, Village Of Twin Lakes, Ward, 1, 2, 3, 4, 5, 6, 7, 8, 9 Twin Lakes Village Hall, 108 E Main St, Twin Lakes, Wi 53181-9678 Lakewood School, 1218 Wilmot Ave, Twin Lakes, Wi 53181-9419
La Crosse, City Of La Crosse, Ward, 25, 26 Spence Elementary School, 2150 Bennett St, La Crosse, Wi 54601-6673 Mary Mother Of The Church Parish Hall, 2006 Weston St, La Crosse, Wi 54601-6526
La Crosse, City Of La Crosse, Ward, 8, 11 Uw-La Crosse Student Union, 521 East Ave N, La Crosse, Wi 54601 Uw-La Crosse Mitchell Hall, 1820 Pine St, La Crosse, Wi 54601
Lincoln, City Of Merrill, Ward, 5, 6, 7, 13, 14 Smith Center, 1100 Marc Dr, Merrill, Wi 54452-3516 Bierman Building, 303 N Sales St, Merrill, Wi 54452
Lincoln, Town Of Russell, Ward, 1 Russell Town Hall, N9691 County Road H, Elkhart Lake, Wi 53020 Russell Town Hall, N5369 State Highway 17, Gleason, Wi 54435
Manitowoc, City Of Manitowoc, Ward, 32 NA Manitowoc Senior Center, 3330 Custer St, Manitowoc, Wi 54220-4355
Manitowoc, City Of Two Rivers, Ward, 7, 8 Koenig Elementary School, 1114 Lowell St, Two Rivers, Wi 54241-3412 J.e. Hamilton Community House, 1710 West Park Street, Two Rivers, Wi 54241
Marinette, Town Of Stephenson, Ward, 4, 5 Crivitz Village Hall, 800 Henriette Ave, Crivitz, Wi 54114-7488 Crivitz Fire Department, 1201 Fj St, Crivitz, Wi 54114
Menominee, Town Of Menominee, Ward, 1, 3, 4, 5 Menominee County Courthouse, W3269 Courthouse Ln, Keshena, Wi 54135 Menominee County Highway Dept., W2703 Chief Carron Rd, Keshena, Wi 54135
Milwaukee, City Of Cudahy, Ward, 4, 5, 6 Cudahy City Hall, 5050 S Lake Dr, Cudahy, Wi 53110-2045 Cudahy High School, 4950 S Lake Dr, Cudahy, Wi 53110
Milwaukee, City Of Cudahy, Ward, 1, 2, 3 Cudahy Library, 3500 Library Dr, Cudahy, Wi 53110-1615 Cudahy High School, 4950 S Lake Dr, Cudahy, Wi 53110
Milwaukee, City Of Cudahy, Ward, 10, 11, 12, 13, 14, 15 General Mitchell School, 5950 S Illinois Ave, Cudahy, Wi 53110-2921 Cudahy High School, 4950 S Lake Dr, Cudahy, Wi 53110
Milwaukee, City Of Cudahy, Ward, 7, 8, 9 Parkview School, 5555 S Nicholson Ave, Cudahy, Wi 53110 Cudahy High School, 4950 S Lake Dr, Cudahy, Wi 53110
Milwaukee, City Of Milwaukee, Ward, 190, 191 Wisconsin Conservatory Of Lifelong Learning, 1017 N 12th St, Milwaukee, Wi 53233-1307 Marquette University Alumni Union, 1442 W Wisconsin Ave, Milwaukee, Wi 53233-2238
Milwaukee, City Of Milwaukee, Ward, 48, 49 Silver Spring Neighborhood Center, 5460 N 64th St, Milwaukee, Wi 53218-3020 Mcgovern Park Senior Center, 4500 W Custer Ave, Milwaukee, Wi 53218-3442
Milwaukee, City Of Milwaukee, Ward, 136 Riverside High School, 1615 E Locust St, Milwaukee, Wi 53211-3222 Urban Ecology Center, 1500 E Park Pl, Milwaukee, Wi 53211-3587
Milwaukee, City Of Milwaukee, Ward, 169 Washington Park Library, 2121 N Sherman Blvd, Milwaukee, Wi 53208-1211 Washington Park Senior Center, 4420 W Vliet St, Milwaukee, Wi 53208-2769
Milwaukee, City Of Milwaukee, Ward, 306 Wilson Senior Center, 2601 W Howard Ave, Milwaukee, Wi 53221 Wilson Park Pavilion, 1601 W Howard Ave, Milwaukee, Wi 53221
Milwaukee, City Of Milwaukee, Ward, 206, 214 Hawley School, 5610 W Wisconsin Ave, Milwaukee, Wi 53213-4258 Wisconsin Humane Society, 4500 W Wisconsin Ave, Milwaukee, Wi 53208-3156
Milwaukee, City Of Oak Creek, Ward, 7, 8, 9 East Middle School, 9330 S Shepard Ave, Oak Creek, Wi 53154-4548 American Legion Post 434, 9327 S Shepard Ave, Oak Creek, Wi 53154
Milwaukee, City Of Oak Creek, Ward, 10, 11, 12 East Middle School, 9330 S Shepard Ave, Oak Creek, Wi 53154-4548 National Guard Armory, 8520 S Howell Ave, Oak Creek, Wi 53154-2921
Milwaukee, City Of Oak Creek, Ward, 4, 5, 6 East Middle School, 9330 S Shepard Ave, Oak Creek, Wi 53154-4548 Oak Creek Assembly Of God, 7311 S 13th St, Oak Creek, Wi 53154
Milwaukee, City Of Oak Creek, Ward, 16, 17, 18, 19 East Middle School, 9330 S Shepard Ave, Oak Creek, Wi 53154-4548 Oak Creek Community Center, 8580 S Howell Ave, Oak Creek, Wi 53154-2921
Milwaukee, City Of Oak Creek, Ward, 1, 2, 3 East Middle School, 9330 S Shepard Ave, Oak Creek, Wi 53154-4548 Oak Creek-Franklin School Adm. Building, 7630 S 10th St, Oak Creek, Wi 53154-1912
Milwaukee, City Of Oak Creek, Ward, 13, 14, 15 East Middle School, 9330 S Shepard Ave, Oak Creek, Wi 53154-4548 Parkway Church, 10940 S Nicholson Rd, Oak Creek, Wi 53154-7032
Milwaukee, Village Of Whitefish Bay, Ward, 5, 6 Whitefish Bay Women’s Club, 600 E Henry Clay St, Whitefish Bay, Wi 53217 Whitefish Bay Village Hall, 5300 N Marlborough Dr, Whitefish Bay, Wi 53217-5344
Monroe, City Of Tomah, Ward, 1, 2, 3, 4, 5, 5, 6, 5, 5, 24, 7, 8, 9, 10, 11, 18, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23 City Of Tomah Municipal Center - Fire Station, 819 Superior Ave, Tomah, Wi 54660-2046 Recreation Park, 1625 Butts Ave, Tomah, Wi 54660
Oconto, Town Of Mountain, Ward, 1 Mountain Town Office, 13503 Weller Rd, Mountain, Wi 54149 Mountain Community Center, 13412 State Highway 32/64, Mountain, Wi 54149
Outagamie, Village Of Harrison, Ward, 1, 2 Harrison Municipal Building, W5298 Hwy 114, Menasha, Wi 54952 Waverly Beach, N8770 Firelane 1, Menasha, Wi 54952
Outagamie, Village Of Little Chute, Ward, 2, 6, 8, 12, 13, 7 Little Chute Civic Center, 625 Grand Ave, Little Chute, Wi 54140-1709 Little Chute Village Hall, 108 W Main St, Little Chute, Wi 54140-1750
Ozaukee, Village Of Saukville, Ward, 1, 6, 7, 2, 3, 4, 5 American Legion Post, 601 W Dekora St, Saukville, Wi 53080-1685 Feith Ymca, 465 Northwoods Rd, Port Washington, Wi 53074-9671
Pierce, City Of Prescott, Ward, 1, 2, 3, 4, 5, 6 Prescott City Hall, 800 Borner St N, Prescott, Wi 54021-2011 Old Ptacek’s Event Center, 1449 Orrin Rd, Prescott, Wi 54021
Pierce, Village Of Ellsworth, Ward, 1, 2, 3, 4 Ellsworth Village Hall, 130 N Chestnut St, Ellsworth, Wi 54011-4135 Pierce County Fairgrounds, 364 N Maple St, Ellsworth, Wi 54011
Polk, Town Of Osceola, Ward, 1, 2, 3, 4, 5 Osceola Town Hall, 516 N East Ave, Dresser, Wi 54009-9039 New Life Christian Community Church, 201 State Road 35 N, Dresser, Wi 54009
Polk, Village Of Milltown, Ward, 1 Milltown Community Center, 301 2nd Ave Sw, Milltown, Wi 54858-9077 Milltown Public Library, 61 Main St W, Milltown, Wi 54858
Portage, Town Of Dewey, Ward, 1 Dewey Town Hall, N5323 Cth I, Tony, Wi 54563-9657 Dewey Town Hall, 430 Dewey Dr, Stevens Point, Wi 54482-9655
Portage, Town Of Sharon, Ward, 1, 2, 3 Sharon Town Hall, N1097 Bollinger Rd, Sharon, Wi 53585-9704 Sharon Town Hall, 6704 State Highway 66, Custer, Wi 54423-9641
Price, Town Of Harmony, Ward, 1 Catawba Municipal Building, W9242 Us Highway 8, Catawba, Wi 54515 Harmony Town Hall, W9095 County Road J, Catawba, Wi 54515-9736
Racine, City Of Burlington, Ward, 1, 2, 3, 4 Burlington Cross Lutheran Church, 126 Chapel Ter, Burlington, Wi 53105-1622 Veterans Memorial Building, 589 Milwaukee Ave, Burlington, Wi 53105-1251
Racine, City Of Burlington, Ward, 5, 6, 7, 8 Veterans Memorial Building, 588 Milwaukee Ave, Burlington, Wi 53105-1251 Veterans Memorial Building, 589 Milwaukee Ave, Burlington, Wi 53105-1251
Racine, Village Of Caledonia, Ward, 1, 2 Saint Louis Church, 13207 County Road G, Caledonia, Wi 53108-9531 Caledonia Hwy Garage (Temporary Relocation), 6922 Nicholson Rd, Caledonia, Wi 53108
Racine, Village Of Wind Point, Ward, 1, 2, 3 Prairie School/Athletic Center, 4050 Lighthouse Dr, Racine, Wi 53402-3114 Wind Point Public Works Garage, 215 E 4 Mile Rd, Racine, Wi 53402
Rock, City Of Beloit, Ward, 13, 14, 15, 22 Central Christian Church, 2460 Milwaukee Rd, Beloit, Wi 53511-3946 Beloit Public Library, 605 Eclipse Blvd, Beloit, Wi 53511
Rock, City Of Beloit, Ward, 1, 2, 3 Beloit Historical Society, 845 Hackett St, Beloit, Wi 53511-5227 Converse Elementary School, 1602 Townline Ave, Beloit, Wi 53511-3248
Rock, City Of Beloit, Ward, 4, 5, 6 Beloit Historical Society, 845 Hackett St, Beloit, Wi 53511-5227 Gaston Elementary School, 1515 W Grand Ave, Beloit, Wi 53511-5933
Rock, City Of Beloit, Ward, 7, 8, 9 Beloit Historical Society, 845 Hackett St, Beloit, Wi 53511-5227 Hackett School, 625 8th St, Beloit, Wi 53511-5307
Rock, City Of Beloit, Ward, 19, 20, 21 Central Christian Church, 2460 Milwaukee Rd, Beloit, Wi 53511-3946 River Of Life Umc, 2345 Prairie Ave, Beloit, Wi 53511-2669
Rock, City Of Beloit, Ward, 16, 17, 18 Central Christian Church, 2460 Milwaukee Rd, Beloit, Wi 53511-3946 Todd Elementary School, 1621 Oakwood Ave, Beloit, Wi 53511-5641
Rock, City Of Brodhead, Ward, 7, 8 Brodhead City Hall, 1111 W 2nd Ave, Brodhead, Wi 53520-1426 Brodhead Fire Station, 1100 W 3rd Ave, Brodhead, Wi 53520
Rock, Town Of Beloit, Ward, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 Town Of Beloit Fire Station #2, 1133 E Inman Pkwy, Beloit, Wi 53511 Beloit Fire Station #1, 2445 S Afton Rd, Beloit, Wi 53511
Rock, Town Of Union, Ward, 1, 2, 3, 4 Evansville Fire Station, 425 Water St, Evansville, Wi 53536-1455 Union Town Hall, 15531 W Green Bay Rd, Evansville, Wi 53536
Rock, Village Of Clinton, Ward, 1, 2, 3 Clinton Village Hall, 301 Cross St, Clinton, Wi 53525-9786 St Stephens Family Center, 716 Shu Lar Ln, Clinton, Wi 53525
Sauk, Village Of Prairie Du Sac, Ward, 5 NA Prairie Du Sac Village Hall, 335 Galena St, Prairie Du Sac, Wi 53578-1008
Sheboygan, City Of Sheboygan, Ward, 15, 20, 21 Sheboygan City Hall, 828 Center Ave, Sheboygan, Wi 53081 Formerly - Wisconsin Bank And Trust, 604 N 8th St, Sheboygan, Wi 53081
St Croix, Town Of Rush River, Ward, 1 Rush River Town Hall, 2008 County Rd N, Baldwin, Wi 54002 Rush River Town Hall, 2008 County Road N, Baldwin, Wi 54002
St Croix, Village Of Somerset, Ward, 1, 2, 3, 4 Somerset Village Hall, 110 Spring St, Somerset, Wi 54025-9002 Somerset Village Public Library, 208 Hud St, Somerset, Wi 54025
Trempealeau, Town Of Gale, Ward, 1, 2, 3 Gale Town Hall, 20037 Gibson St, Galesville, Wi 54630 Town Of Gale Shop, 19992 W Mill Rd, Galesville, Wi 54630
Vernon, City Of Hillsboro, Ward, 1, 2, 3, 4 Hillsboro City Hall, 123 Mechanic St, Hillsboro, Wi 54634-4342 Hillsboro Firemen’s Community Center, 203 Mill St, Hillsboro, Wi 54634
Vernon, Town Of Franklin, Ward, 1, 2 Franklin Town Hall, W16177 County Road C, Taylor, Wi 54659-7008 Franklin Town Hall, S6635 Us Highway 27, Viroqua, Wi 54665
Vernon, Town Of Genoa, Ward, 1, 2 Genoa Town Shop, S5165 S Creek Rd, Genoa, Wi 54632-8796 Village Of Genoa Fire Station, 126 Main St, Genoa, Wi 54632-8877
Vernon, Town Of Webster, Ward, 1, 2 Webster Town Garage, E10614 State Road 82, La Farge, Wi 54639-8040 Webster Town Hall, E10614 State Highway 82, La Farge, Wi 54639
Vilas, Town Of Boulder Junction, Ward, 1, 2 Boulder Junction Fire Station, 5424 Park St, Boulder Junction, Wi 54512 Boulder Junction Community Center, 5386 Park St, Boulder Junction, Wi 54512-9605
Walworth, City Of Burlington, Ward, 9, 10 Veterans Memorial Building, 588 Milwaukee Ave, Burlington, Wi 53105-1251 Veterans Memorial Building, 589 Milwaukee Ave, Burlington, Wi 53105-1251
Walworth, City Of Elkhorn, Ward, 1, 2, 3, 4, 5, 6, 7, 8 Elkhorn Recreation Building, 200 Devendorf St, Elkhorn, Wi 53121 Elkhorn National Guard Armory, 401 Fair Ave, Elkhorn, Wi 53121-1938
Walworth, City Of Whitewater, Ward, 7, 8, 13, 9 Downtown Whitewater Armory, 146 W North St, Whitewater, Wi 53190 Uww Kachel Field House, 907 W Schwager Dr, Whitewater, Wi 53190
Walworth, Town Of Delavan, Ward, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 Delavan Town Hall, 5621 Town Hall Rd, Delavan, Wi 53115-3712 Boxed & Burlap, 2935 State Road 67, Delavan, Wi 53115
Walworth, Town Of Geneva, Ward, 1, 2, 3, 4, 5, 6, 7, 8 Geneva Town Hall, N3496 Como Rd, Lake Geneva, Wi 53147-2617 Como Community Church, W3901 Palmer Rd, Lake Geneva, Wi 53147-2621
Walworth, Town Of Lafayette, Ward, 1, 2, 3 Lafayette Town Hall, W4614 Potter Rd, Elkhorn, Wi 53121 Evergreen Country Club, N6246 Us Highway 12, Elkhorn, Wi 53121
Washington, City Of West Bend, Ward, 4, 5, 6 Public Agency Center, 333 E Washington St, West Bend, Wi 53095-2585 West Bend Library, 630 Poplar St, West Bend, Wi 53095-3248
Washington, Village Of Jackson, Ward, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 Jackson Village Hall, N168w20733 Main St, Jackson, Wi 53037-9381 Jackson Area Community Center, N165w20330 Hickory Ln, Jackson, Wi 53037
Washington, Village Of Slinger, Ward, 1, 2, 3, 4, 5, 6, 7, 8, 9 Slinger Community Room, 300 Slinger Rd, Slinger, Wi 53086-9022 Slinger Community Room, 218 Slinger Rd, Slinger, Wi 53086
Waukesha, City Of Brookfield, Ward, 14, 15, 16, 17 Brookfield Public Safety Building, 2100 N Calhoun Rd, Brookfield, Wi 53005-5054 Brookfield Central High School, 16900 Gebhardt Rd, Brookfield, Wi 53005
Waukesha, City Of Brookfield, Ward, 1, 2, 3 Immanuel Church, 4250 N 137th St, Brookfield, Wi 53005-1736 Brookfield East High School, 3305 Lilly Rd, Brookfield, Wi 53005
Waukesha, City Of Delafield, Ward, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 Delafield City Hall, 500 Genesee St, Delafield, Wi 53018-1817 Christ The King Lutheran Church, 1600 Genesee St, Delafield, Wi 53018-1202
Waukesha, City Of Muskego, Ward, 11, 12 Muskego City Hall, Lobby, W182s8200 Racine Ave, Muskego, Wi 53150-8750 Fox River Christian Church, S67w19491 Tans Dr, Muskego, Wi 53150-8521
Waukesha, City Of Muskego, Ward, 1, 2, 3 Muskego City Hall, Council Chamber, W182s8200 Racine Ave, Muskego, Wi 53150-8750 Lakepoint Church, S63w13694 Janesville Rd, Muskego, Wi 53150
Waukesha, City Of Muskego, Ward, 4, 5 Muskego City Hall, Room 1a, W182s8200 Racine Ave, Muskego, Wi 53150-8750 Muskego Public Library, Room 4, S73w16663 Janesville Rd, Muskego, Wi 53150
Waukesha, City Of Muskego, Ward, 15, 16 Muskego City Hall, Council Chamber, W182s8200 Racine Ave, Muskego, Wi 53150-8750 Muskego Public Library, Rooms 1 - 3, S73w16663 Janesville Rd, Muskego, Wi 53150
Waukesha, City Of Oconomowoc, Ward, 1, 2, 3, 13, 14, 15 Greenland School, 440 Coolidge St, Oconomowoc, Wi 53066-2808 Oconomowoc Police Department, 630 E Wisconsin Ave, Oconomowoc, Wi 53066
Waukesha, City Of Oconomowoc, Ward, 7, 8, 9, 16 Oconomowoc Arts Center, 641 E Forest St, Oconomowoc, Wi 53066-3814 Western Lakes Fire District - Pabst Farms Location #1, 1400 Oconomowoc Pkwy, Oconomowoc, Wi 53066
Waukesha, Town Of Merton, Ward, 1, 2, 3, 7, 8, 9 Merton Town Hall, W314n7624 State Road 83, Hartland, Wi 53029-9759 North Lake School, N75w31283 County Road Vv, Hartland, Wi 53029-8022
Waukesha, Village Of Hartland, Ward, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 Hartland Municipal Building, 210 Cottonwood Ave, Hartland, Wi 53029-2017 Saint Charles Church, 313 Circle Dr, Hartland, Wi 53029-1824
Waukesha, Village Of Menomonee Falls, Ward, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Davian’s Banquet & Conference Center, N56w16300 Silver Spring Dr, Menomonee Falls, Wi 53051-5620 Good Shepherd, N88w17658 Christman Rd, Menomonee Falls, Wi 53051-2630
Waukesha, Village Of Merton, Ward, 1, 2, 3, 4, 5, 6 Merton Village Hall, N67w28343 Sussex Rd, Merton, Wi 53056 Merton Village Hall/Community Center, W282n6996 Main St, Merton, Wi 53056
Waupaca, City Of New London, Ward, 6, 7 Trinity Lutheran Church, 709 W Beckert Rd, New London, Wi 54961-2405 Washington Center, 600 W Washington St, New London, Wi 54961-1765
Waupaca, Town Of Mukwa, Ward, 3, 4, 5 Mukwa Town Hall, E8514 Weyauwega Rd, New London, Wi 54961-7934 Bean City Ballroom, N2505 Bean City Rd, New London, Wi 54961-8903
Waupaca, Town Of Weyauwega, Ward, 1 Weyauwega Old Middle School, 310 E Main St, Weyauwega, Wi 54983 Weyauwega American Legion, 303 N Mill St, Weyauwega, Wi 54983
Winnebago, City Of Oshkosh, Ward, 17, 18, 37, 40 Alberta Kimball Auditorium, 435 N Eagle St, Oshkosh, Wi 54902 Father Carr’s Place, 1062 N Koeller St, Oshkosh, Wi 54902-3245
Winnebago, City Of Oshkosh, Ward, 3, 4 Saint John’s Church, 808 N Main St, Oshkosh, Wi 54901-4447 Kolf Sports Center, 785 High Ave, Oshkosh, Wi 54901
Winnebago, City Of Oshkosh, Ward, 30, 31, 32 Oshkosh Elks Lodge, 175 W Fernau Ave, Oshkosh, Wi 54901-1218 Sunnyview Exposition Site, 500 E County Road Y, Oshkosh, Wi 54901
Winnebago, Town Of Algoma, Ward, 3, 4, 5, 6 Algoma Town Hall, 15 N Oakwood Rd, Oshkosh, Wi 54904-7826 Algoma Town Hall, 1072 Honey Creek Rd, Oshkosh, Wi 54904-9399
Wood, Village Of Vesper, Ward, 1 Vesper Municipal Bldg, 6554 Cameron Ave, Vesper, Wi 54489-9458 Vesper Community Center, 5032 Benson Ave, Vesper, Wi 54489
# a function to plot each county
countymap <- function(county){
p <- wi %>% 
  filter(County == county) %>% 
ggplot() +
  geom_polygon(aes(x = long, y = lat, group = group), fill = "#08306B") +
  geom_point(aes(x = Longitude.Primary, 
                 y = Latitude.Primary), 
             color = "Red", alpha = .5) +
  geom_point(aes(x = Longitude.General, 
                 y = Latitude.General), 
             color = "Green", shape = "+", size = 5, alpha = .5) + 
  geom_text( aes(x = Longitude.Primary, 
                 y = Latitude.Primary,
                 label = PollingPlaceName.Primary), 
             color = "Red", alpha = .5, 
             angle = 45, check_overlap = T) +
    geom_text( aes(x = Longitude.General, 
                 y = Latitude.General,
                 label = PollingPlaceName.General), 
             color = "Green", alpha = .5, 
             angle = 45, check_overlap = T) +
  geom_segment(aes(x = Longitude.Primary,
                   y = Latitude.Primary,
                   xend = Longitude.General, 
                   yend = Latitude.General), 
                #arrow = arrow(length = unit(0.1, "cm")),
               color = "green") + 
  geom_text( aes(x = Longitude.General, 
                 y = Latitude.General,
                 label = PollingPlaceName.General), 
             color = "Green", alpha = .5, 
             angle = 45, check_overlap = T) +
  theme_void() + 
  labs(title = paste(county, "County"))

return(p)
}

map(diff %>%
      filter(net != 0 | changes > 6) %>%
      .$County %>% 
      unique(),
    countymap) 
## [[1]]

## 
## [[2]]

## 
## [[3]]

## 
## [[4]]

## 
## [[5]]

## 
## [[6]]

## 
## [[7]]

## 
## [[8]]


Changes since October 7th, 2020

By law, polling locations are not supposed to change in the 60 days before a general election but ¯\_(ツ)_/¯

The Election Commission’s guidance just says 30 days, but Wisconsin Statute 5.25(3) specifies 60 days for general elections.

“Polling places shall be established for each September primary and general election at least 60 days before the election, and for each other election at least 30 days before the election.” - Wisconsin Statute 5.25(3)

oct_locations <- readxl::read_xlsx(here::here("data", "2020 General Election PPL RU List.xlsx")) %>% 
  select(County, Muni, ReportingUnit, PollingPlaceName, PollingPlaceAddress, Longitude, Latitude)

# apply function to old polling locations
oct <- oct_locations %>% split_wards()

# diff between old and new polling locations
diff <- anti_join(official, oct, 
                  by = c("County", "Muni", "ReportingUnit", 
                         "ward", "PollingPlaceAddress")) %>%
  left_join(oct, 
            by = c("County", "Muni", "ReportingUnit", "ward"),
            suffix = c(".October21", ".October7"))

# calculate the total and net number of changes
diff %<>% 
  group_by(County)%>% 
  mutate(changes = length(unique(PollingPlaceAddress.October21)),
         net = changes - length(unique(PollingPlaceAddress.October7))) 

# simplify polling place names + addresses 
diff %<>% mutate(October21 = str_c(PollingPlaceName.October21, 
                                 PollingPlaceAddress.October21, 
                                 sep = ", "),
                 October7 = str_c(PollingPlaceName.October7, 
                                 PollingPlaceAddress.October7, 
                                 sep = ", "))
wi <- map_data("county", "wisconsin") %>% 
  mutate(County = str_to_title(subregion) ) %>% 
  group_by(subregion) %>%
  # Find the center of each subregion
  mutate(center_lat = mean(range(lat) ),
         center_long = mean(range(long) ) )

wi  %<>% 
  # add total and net changes to map data
  left_join(diff %>% 
              select(County, Muni, PollingPlaceAddress.October21, changes, net) ) %>% 
  # append polling location points 
  full_join(diff %>% mutate(group = NA)) %>% 
  mutate(changes = changes %>% replace_na(0),
         net = net %>% replace_na(0)) 

# plot changes 
wi %>% 
  ggplot( ) +
  aes(x = long, y = lat, group = group, fill = factor(changes)) +
  geom_polygon(color = "white") +
  geom_point(aes(x = Longitude.October7, 
                 y = Latitude.October7), 
             color = "Red", alpha = .5) +
  geom_point(aes(x = Longitude.October21, 
                 y = Latitude.October21), 
             color = "Green", shape = "+", size = 5, alpha = .5) + 
  # label counties at their center
  geom_text( aes(x = center_long, y = center_lat, label = County), 
             size = 2, angle = 45, check_overlap = T, color = "white") +
  theme_void() + 
  labs(fill = "Polling Place\nAddresses Changed\nper County Between\nOct. 7 and Oct. 21 2020") +
  scale_fill_brewer(direction = -1) 

New polling locations are green. Removed locations are red. Brighter points mean that more Wards moved to or from that polling location.

# net 
wi %>% 
ggplot() +
  aes(x = long, y = lat, group = group, fill = factor(net)) + 
  geom_polygon(color = "white") +
  geom_point(aes(x = Longitude.October7, 
                 y = Latitude.October7), 
             color = "Red", alpha = .5) +
  geom_point(aes(x = Longitude.October21, 
                 y = Latitude.October21), 
             color = "Green", shape = "+", size = 5, alpha = .5) + 
  geom_text( aes(x = center_long, y = center_lat, label = County), 
             size = 2, angle = 45, check_overlap = T, color = "white") +
  theme_void() + 
  labs(fill = "Net Polling Places\nAdded per County Between\nOct. 7 and Oct. 21 2020") +
  scale_fill_brewer(direction = -1) 

# table of changes 
diff %>% 
  ungroup( ) %>%
  group_by(County, Muni, October21, October7) %>% 
  summarise(Ward = paste(County, Muni, "Ward", 
                         paste(ward, collapse = ", "),
                         sep = ", ")) %>%
  ungroup() %>% 
  select(Ward, October7, October21) %>%  
  distinct() %>% 
  knitr::kable() %>% 
  kable_styling() %>% 
  scroll_box(height = "500px")
Ward October7 October21
Columbia, Town Of Lewiston, Ward, 1, 2 Lewiston Elementary School, W11195 Highway 127, Portage, Wi 53901 Lewiston Elementary School, W11195 State Road 127, Portage, Wi 53901
Dane, City Of Madison, Ward, 107, 127, 150 Holy Name Heights, 702 S High Point Rd, Madison, Wi 53719-3522 Blackhawk Church, 9620 Brader Way, Middleton, Wi 53562-9296
Dane, City Of Madison, Ward, 56 Uw-Madison Memorial Library, 728 State St, Madison, Wi 53706-1418 Chazen Museum Of Art, 750 University Ave, Madison, Wi 53706
Dane, City Of Madison, Ward, 65 Wingra School, 718 Gilmore St, Madison, Wi 53711-1995 Edgewood College Rennebohm Library, 959 Edgewood College Dr, Madison, Wi 53711
Dane, City Of Madison, Ward, 67 Uw Welcome Center And Visitor Information, 21 N Park St, Madison, Wi 53715 Faith Community Bible Church, 3 N Park St, Madison, Wi 53715
Dane, City Of Madison, Ward, 90, 104, 117, 141 University Research Park Accelerator Building, 5602 Research Park Blvd, Madison, Wi 53719 Heritage Square, 716 S Whitney Way, Madison, Wi 53711
Dane, City Of Madison, Ward, 47 Pyle Center, 702 Langdon St, Madison, Wi 53706 Hillel At The University Of Wisconsin, 611 Langdon St, Madison, Wi 53703-1103
Dane, City Of Madison, Ward, 99 Heritage Congregational Church, 3102 Prairie Rd, Madison, Wi 53719-1578 Huegel Elementary, 2601 Prairie Rd, Madison, Wi 53711-4156
Dane, City Of Madison, Ward, 152 Lakeview Lutheran Church, 1625 Northport Dr, Madison, Wi 53704-2300 Lakeview Lutheran Church, 4001 Mandrake Rd, Madison, Wi 53704
Dane, City Of Madison, Ward, 51 Madison Central Library, 201 W Mifflin St, Madison, Wi 53703-2511 Madison Senior Center, 330 W Mifflin St, Madison, Wi 53703-2514
Dane, City Of Madison, Ward, 50, 54 Madison Senior Center, 330 W Mifflin St, Madison, Wi 53703-2514 Nicholas Recreation Center, 797 W Dayton St, Madison, Wi 53715
Dane, City Of Madison, Ward, 55 Union South, 1308 W Dayton St, Madison, Wi 53715 Nicholas Recreation Center, 797 W Dayton St, Madison, Wi 53715
Dane, City Of Madison, Ward, 106, 125, 137, 140, 151 Blackhawk Church, 9620 Brader Way, Middleton, Wi 53562-9296 Olson Elementary School, 801 Redan Dr, Verona, Wi 53593
Dane, City Of Madison, Ward, 49 Ian’s Pizza On State, 100 State St, Madison, Wi 53703-2573 Orpheum Theater, 216 State St, Madison, Wi 53703
Dane, City Of Madison, Ward, 57 Uw-Madison Memorial Library, 728 State St, Madison, Wi 53706-1418 The University Club, 803 State St, Madison, Wi 53703-1019
Dane, City Of Madison, Ward, 58 Union South, 1308 W Dayton St, Madison, Wi 53715 Uw Memorial Union, 800 Langdon St, Madison, Wi 53706-1419
Dane, City Of Madison, Ward, 59, 147 Union South, 1308 W Dayton St, Madison, Wi 53715 Wisconsin Energy Institute, 1552 University Ave, Madison, Wi 53726
Dane, City Of Madison, Ward, 46 Gates Of Heaven, 302 E Gorham St, Madison, Wi 53703 Wisconsin Masonic Center, 301 Wisconsin Ave, Madison, Wi 53703
Dane, Village Of Deforest, Ward, 23 NA De Forest Village Hall, 120 S Stevenson St, De Forest, Wi 53532
Dane, Village Of Oregon, Ward, 7, 8, 9, 10 Oregon Village Hall - Community Room, 103 N Alpine Pkwy, Oregon, Wi 53575-3109 Oregon Village Hall - Community Room, 117 Spring St, Oregon, Wi 53575-1451
Eau Claire, City Of Eau Claire, Ward, 80 NA Calvary Baptist Church, 3036 Epiphany Ln, Eau Claire, Wi 54703
Eau Claire, City Of Eau Claire, Ward, 81 NA Cedarcreek Community Church, 3520 Eastwind Dr, Eau Claire, Wi 54701-3120
Jackson, Town Of Manchester, Ward, 1 Manchester Town Hall, W9757 County Road O, Black River Falls, Wi 54615-6818 Manchester Town Hall, N2870 Garage Rd, Black River Falls, Wi 54615
La Crosse, City Of La Crosse, Ward, 8, 11 Uw-La Crosse Student Union, 521 East Ave N, La Crosse, Wi 54601 Uw-La Crosse Mitchell Hall, 1820 Pine St, La Crosse, Wi 54601
Manitowoc, City Of Manitowoc, Ward, 32 NA Manitowoc Senior Center, 3330 Custer St, Manitowoc, Wi 54220-4355
Racine, Village Of Caledonia, Ward, 1, 2 Saint Louis Church, 13207 County Road G, Caledonia, Wi 53108-9531 Caledonia Hwy Garage (Temporary Relocation), 6922 Nicholson Rd, Caledonia, Wi 53108
Sauk, Village Of Prairie Du Sac, Ward, 5 NA Prairie Du Sac Village Hall, 335 Galena St, Prairie Du Sac, Wi 53578-1008
Sheboygan, City Of Sheboygan, Ward, 15, 20, 21 Senior Activity Center, 428 Wisconsin Ave, Sheboygan, Wi 53081-4146 Formerly - Wisconsin Bank And Trust, 604 N 8th St, Sheboygan, Wi 53081
St Croix, City Of Hudson, Ward, 1, 2, 9, 10 Hudson City Hall, 505 3rd St, Hudson, Wi 54016-1603 City Of Hudson Fire Hall, 222 Walnut St, Hudson, Wi 54016
St Croix, Town Of Rush River, Ward, 1 Rush River Town Hall, 2008 County Rd N, Baldwin, Wi 54002 Rush River Town Hall, 2008 County Road N, Baldwin, Wi 54002
Trempealeau, Town Of Gale, Ward, 1, 2, 3 Gale Town Hall, 20037 Gibson St, Galesville, Wi 54630 Town Of Gale Shop, 19992 W Mill Rd, Galesville, Wi 54630
# a function to plot each county
countymap <- function(county){
p <- wi %>% 
  filter(County == county) %>% 
ggplot() +
  geom_polygon(aes(x = long, y = lat, group = group), fill = "#08306B") +
  geom_point(aes(x = Longitude.October7, 
                 y = Latitude.October7), 
             color = "Red", alpha = .5) +
  geom_point(aes(x = Longitude.October21, 
                 y = Latitude.October21), 
             color = "Green", shape = "+", size = 5, alpha = .5) + 
  geom_text( aes(x = Longitude.October7, 
                 y = Latitude.October7,
                 label = PollingPlaceName.October7), 
             color = "Red", alpha = .5, 
             angle = 45, check_overlap = T) +
    geom_text( aes(x = Longitude.October21, 
                 y = Latitude.October21,
                 label = PollingPlaceName.October21), 
             color = "Green", alpha = .5, 
             angle = 45, check_overlap = T) +
  geom_segment(aes(x = Longitude.October7,
                   y = Latitude.October7,
                   xend = Longitude.October21, 
                   yend = Latitude.October21), 
                #arrow = arrow(length = unit(0.1, "cm")),
               color = "green") + 
  geom_text( aes(x = Longitude.October21, 
                 y = Latitude.October21,
                 label = PollingPlaceName.October21), 
             color = "Green", alpha = .5, 
             angle = 45, check_overlap = T) +
  theme_void() + 
  labs(title = paste(county, "County"))

return(p)
}

map(diff %>%
      filter(net != 0 | changes > 1) %>%
      .$County %>% 
      unique(),
    countymap) 
## [[1]]

## 
## [[2]]

## 
## [[3]]

Early voting and ballot drop boxes

Note: Because the Election Commission’s website, myvote.wi.gov, is incomplete, voters should go to iwillvote.com for early voting and ballot drop box locations

To request an absentee ballot in Wisconsin, you must go to the Election Commission’s website myvote.wi.gov. This site then shows voters their Early Voting (called “In-Person Absentee”) and Drop Box options. The Election Commission relies on Municipal Clerks to provide this information. Unfortunately, even halfway through early voting, many municipalities have not yet provided this information. For example, Madison has, but Green Bay has not.

myvote.wi.gov has options for Madison

myvote.wi.gov lacks options for Green Bay

myvote.wi.gov lacks early voting or drop box information for most municipalities

early <- read_csv(here("data", "Early Voting Sites - 2020 General Election.csv")) %>% 
  select(Muni) %>% 
  distinct() %>% 
  mutate(Muni = str_remove(Muni, " - .*"),
         early = "Early voting options listed")

drop <- read_csv(here("data", "Absentee Dropboxes - 2020 General Election.csv")) %>% 
  select(Muni) %>% 
  distinct() %>% 
  mutate(Muni = str_remove(Muni, " - .*"),
         drop = "Drop boxes listed")

# add to data
official_locations %<>% 
  # reformat county
  mutate(County = County %>% 
           str_to_title() %>% 
           str_remove(" County") ) %>% 
  left_join(early) %>% 
  left_join(drop) %>% 
  mutate(drop = drop %>% replace_na("No information"),
         early = early %>% replace_na("No information") )

# summary table 
official_locations %>% 
  select(Muni, early, drop) %>% 
  distinct() %>% 
  mutate(early = str_replace(early, "Early voting options listed", "Yes"),
         drop = str_replace(drop, "Drop boxes listed", "Yes")) %>%
count(early, drop) %>% 
  rename(`Early voting options listed` = early,
         `Drop boxes listed` = drop,
         `Municipalities` = n) %>% 
  kablebox()
Early voting options listed Drop boxes listed Municipalities
No information No information 722
No information Yes 34
Yes No information 473
Yes Yes 390
# format map data 
wi <- map_data("county", "wisconsin") %>% 
  mutate(County = str_to_title(subregion) ) %>% 
  group_by(subregion) %>%
  # Find the center of each subregion
  mutate(center_lat = mean(range(lat) ),
         center_long = mean(range(long) ) )

# add full data to map
wi %<>% full_join(official_locations %>%
                    select(County, Muni, Longitude, Latitude, early, drop) %>% 
                    distinct() %>%
                    mutate(group  = NA) )

# early 
early_plot <- function(x){ 
ggplot(x) +
  aes(x = long, y = lat, group = group) + 
  geom_polygon(color = "white") +
  geom_point(aes(x = Longitude, 
                 y = Latitude,
                 color = early), 
             alpha = 900/nrow(x)) + 
  geom_text( aes(x = center_long, y = center_lat, label = County), 
             size = 2, angle = 45, check_overlap = T, color = "white") +
      geom_text( aes(x = Longitude, 
                 y = Latitude,
                 color = early,
                 label = Muni), 
             size = 200/nrow(x), vjust = -1, check_overlap = T) +
  theme_void() + 
  labs(color = "Early voting options\non myvote.wi.gov\nby polling place") +
  scale_color_brewer(palette = "Set2")
}

early_plot(wi)

early_plot(wi %>% filter(County == "Brown")) + labs(title = "Brown County")

early_plot(wi %>% filter(County == "Outagamie")) + labs(title = "Outagamie")

early_plot(wi %>% filter(County == "Milwaukee")) + labs(title = "Milwaukee County")

# drop boxes
drop_plot <- function(x){ 
ggplot(x) +
  aes(x = long, y = lat, group = group) + 
  geom_polygon(color = "white") +
  geom_point(aes(x = Longitude, 
                 y = Latitude,
                 color = drop), 
             alpha = 900/nrow(x)) + 
  geom_text( aes(x = center_long, y = center_lat, label = County), 
             size = 2, angle = 45, check_overlap = T, color = "white") +
      geom_text( aes(x = Longitude, 
                 y = Latitude,
                 color = drop,
                 label = Muni), 
             size = 200/nrow(x), vjust = -1, check_overlap = T) +
  theme_void() + 
  labs(color = "Ballot drop box options\non myvote.wi.gov\nby polling place") +
  scale_color_brewer(palette = "Set2")
}

drop_plot(wi)

drop_plot(wi %>% filter(County == "Brown")) + labs(title = "Brown County")

drop_plot(wi %>% filter(County == "Milwaukee")) + labs(title = "Milwaukee County")

Ballot Drop Boxes Close at Different Times

About 75% of Absentee Ballot Drop Boxes are open until polls close at 8 PM, but hundreds of drop boxes across Wisconsin close earlier, meaning that a voter must take their ballot to their polling place if they miss the last drop box pickup. Voters can check their municipality’s Drop Box pickup time on myvote.wi.gov; If it is not there (myvote has no information on most drop boxes), they should try iwillvote.com or call their Clerk.

drop_date <- read_csv(here("data", "Absentee Dropboxes - 2020 General Election.csv")) %>% 
  select(Muni, ToDate) %>% 
  mutate(Muni = str_remove(Muni, " - .*") %>% str_to_title() ) %>% 
  distinct() %>%
  mutate(date = ifelse(ToDate == "11/3/2020", " Election Day", "Before Election Day") )

# add drob box date data to map
wi %<>% 
  mutate(Muni = str_to_title(Muni)) %>% 
  full_join(drop_date)

# drop boxes
drop_plot <- function(x){ 
  
ggplot(x) +
  aes(x = long, y = lat, group = group) + 
  geom_polygon(color = "white") +
  geom_point(aes(x = Longitude, 
                 y = Latitude,
                 color = date ),
               alpha = 900/nrow(x) ) + 
  geom_text( aes(x = center_long, y = center_lat, label = County), 
             size = 2, angle = 45, check_overlap = T, color = "white") +
      geom_text( aes(x = Longitude, 
                 y = Latitude,
                 color = date,
                 label = Muni), 
             size = 200/nrow(x), vjust = -1, check_overlap = T) +
    theme_void() +
  scale_color_brewer(palette = "Set2") + 
  labs(color = "Ballot drop box deadline\non myvote.wi.gov\nby polling place") 
}

drop_plot(wi)

drop_plot(wi %>% filter(County == "Dane")) + labs(title = "Dane County")

drop_plot(wi %>% filter(County == "Portage")) + labs(title = "Portage County")

drop_plot(wi %>% filter(County == "Racine")) + labs(title = "Racine County")

drop_plot(wi %>% filter(County == "Rock")) + labs(title = "Rock County")

drop_plot(wi %>% filter(County == "Green")) + labs(title = "Green County")

drop_plot(wi %>% filter(County == "Ozaukee")) + labs(title = "Ozaukee County")