I'd forgotten about that graph, and I never knew it was called a bipartite graph, thanks!

It took a bunch of work to get the data shaped properly, so much so that I gave up on trying to figure out an algorithmic way of doing it that I could describe for other graphs. Everything in that image is a separate polygon, so there's a bunch of pre-computation necessary to get everything aligned properly.

Yeah. After looking at it I decided to go back use the bipartite library in R. There is also a specific piece of open source software designed for network node analysis called Graphi that I am going to try out.