Ditto towns

New England is a beautiful place, but its place-names aren’t the most lyrical, with an awful lot of toponymic stealing from Old England. What’s more, New England place-names aren’t even uniquely plagiarized: 655 towns and cities in New England have a counterpart with the same name elsewhere in the six-state area. Here they all are in a single GIF:

Animated Towns Loop

A few notes:

  • There are two city/town names that show up in all six New England states: Lincoln and Warren.
  • This only accounts for city/towns that have jurisdictional status, so, although you’ll find Roxbury in Vermont, New Hampshire, Maine, and Connecticut, you won’t find it in Massachusetts, because the former Roxbury has been absorbed into the city of Boston
  • Some place-names appear twice in the same state; in Maine, Rangeley town and Rangeley plantation are separate jurisdictions right next to each other.

Here’s an interactive map of the same data (full-size here).


And, for the curious, here’s the Python code I used to produce the frames of the GIF above.

import geopandas as gpd
import pandas as pd
import matplotlib.pyplot as plt

towns = gpd.read_file('towns.json')
towns = towns.to_crs(epsg=3395)
counts = pd.read_csv('counts.csv')

fig = plt.figure()
bgAx = fig.add_subplot(1,1,1)
fig.set_size_inches(2,2)
bgAx.set_axis_off()
bgAx.set_aspect('equal')
towns.plot(ax=bgAx, color='#eeeeee', edgecolor='#dcdcdc', linewidth=0.01)

for index,town in counts.sort_values('name').iterrows():
    fgAx = fig.add_subplot(1,1,1,sharex=bgAx,sharey=bgAx)
    fgAx.set_axis_off()
    thisTown = town['name']
    townGeo = towns.loc[towns['NAME'] == thisTown]
    thisPlot = townGeo.plot(ax=fgAx, color='red', edgecolor='none')
    fgAx.set_title(thisTown,fontdict={'fontweight':'bold','fontsize':5})
    outFile = './frames/' + thisTown + '.tif'
    plt.savefig(outFile,dpi=400,bbox_inches='tight')
    fgAx.cla()