I visualized my gaming clan. As the size of the group has increased, the methods for drawing it have evolved.
These diagrams are made using Python, NetworkX, and Matplotlib. The vertices of the graph are people (Discord users) and the weights are
1 / t, the time they spent together in voice chat. To make the graph easier to render, only relationships that are part of the Minimum Spanning Tree are shown.
Members of the group pictured above (gamers in a Discord guild) remarked that the tree:
- accurately captures the subgroups of the larger group,
- places each person in the correct subgroup,
- and even picks out the correct “informal ringleader” for each subgroup.
That’s pretty interesting, given the limited information available to the algorithm. The min spanning tree might help machines to better understand human group structure & leadership.
The min spanning tree trick has another important advantage: scalability. Since it’s a tree, it’s guaranteed to be planar. That means it will always be possible to draw the structure neatly on a 2D page, even for groups of thousands or millions of people.