Across all of Seinfeld, we see many relationships develop between the main four characters and many others. Explore the visualisation below to view all the many friends, family, girlfriends/boyfriends, and foes of the series!
Interactivity
Many of the peripheral characters have relationships with multiple of the main characters (ex: Morty Seinfeld is obviously Jerry’s father, and also goes into business with Kramer) – which leads to very tight clusters.
Click and drag the centroids apart for better visibility.
I took some inspiration from other visualizations1, but I really wanted to find a way to make it more interactive and dynamic. I’ve been slowly feeling my way through D3, so I figured it would be a great way to learn some of the d3.force* modules.
Unfortunately, due to how tightly clustered these relationships are around the main characters, I did have to remove some links entirely which had no connection to the main four (ex: Micky Abbot’s mother). Due to the math of the forces involved, these disconnected nodes were being shot out into the void outside the canvas as soon as their connection to the main characters disappeared, rendering them pointless. From here, I’d explore different ways to dynamically render the text, as I’m not entirely satisfied with it – perhaps there is a way to check for overlaps, then only print the text that belongs to the larger node?
Seinfeld is probably my all-time favorite series, so this was a lot of fun to make. While going through this project, I was hemming and hawing about which episode was my absolute favorite. In doing so, I couldn’t decide between two: The Stake Out and The Marine Biologist. The latter is as classic as it gets; I’m sure this is on most everyone’s lists. However, I think The Stake Out is a slept on episode for a few reasons:
Though the second episode of the series, it’s the first with Elaine
Jerry’s parents are also in it for the first time, with Liz Sheridan as Helen and Phil Bruns as Morty (the only one)
George’s oft-used persona of the importer-exporter Art Vandelay is created
If you’d like to explore the code behind the visualisation, continue below to the Appendix.
-CH
Appendix
Show the Code
// Read in data and parserelationships = {let raw =awaitFileAttachment("seinfeld_relationships@7.json").json(), counts =newObject() raw = raw.filter(d => (characters.includes(d.To) || characters.includes(d.From)) && (types.includes(d.Type))) raw.map(d => d.From).forEach(d => {return counts[d] ? counts[d]++: counts[d] =1 })return {nodes:Array.from(newSet(raw.map(d => d.From))).map(d => ({id: d,count: counts[d]})),links: raw }}