Who matters in the underworld, and what breaks when they're gone
The same Week 3 playbook — five centrality measures, directed vs. undirected rankings, a general
shortest-path explorer, a node-removal fragmentation test, and the tightest cliques — run over
Wikipedia's Marvel supervillains network instead of the heroes: 370 nodes where 43 villains nobody
links to sit outside a 323-node giant component, and Purple Man — not the biggest hub — turns out to
be the single worst point to disappear.
"Important" is not one thing. A villain can be important because a lot of other villains link to
them, because they sit close to everyone else, because they're the bridge that holds two
otherwise-unconnected parts of the underworld together, or because the important villains
happen to be the ones linking to them. Those are four different, precisely defined questions — and
on this network they don't always agree on an answer.
Everything below runs on the same 370-villain, 1,136-edge frozen crawl from
data/Marvel_Comics_supervillains/ that the Week 2 supervillains post used — no new
data, no team or decade labels. The giant component is a stretchier world than the heroes': the
category articles mostly share one Rogue's Gallery each (Venom's page links to a lot of Spider-Man
antagonists; Apocalypse's to X-Men antagonists), so hubs sit on both sides of the
hero/villain divide — Hulk, Deadpool and Doctor Doom loom large here too, alongside genuine
villains like Norman Osborn and Magneto.
Just paths, four centrality measures plus PageRank, degree-preserving-shuffle null models, node
removal, and maximal cliques, computed offline in analysis/build_week3_villains.py and
loaded frozen from data/week3/week3_villains_summary.json. The three big interactives
below recompute nothing expensive live — they look numbers up and draw them; the one live
computation left in the browser is the shortest-path search in the Six Degrees explorer, which is
cheap enough to run per click.
Five measures, five different definitions of "matters." Switch between them below — the ranking
changes every time, because each one is answering a different question. Every measure can be
computed on two graphs: the undirected giant component (323 villains, treating a
link either direction as a connection) and the full directed network (370
villains, following Wikipedia's links exactly as written). Use the Measure and Scope switches
together to compare.
Measure
Undirected giant component
Scope
The top 15 by the selected measure, on the left; the same villains sized and colored on the
network, on the right (the rest of the 323-villain giant component sits dim in the background so
the shape stays stable across measures). Click a name — in the list or on the network — to inspect
that villain, including a null-model comparison where one was computed.
Click a villain above to inspect their numbers.
Values computed once, offline, in analysis/build_week3_villains.py — every measure in
both scopes with NetworkX: undirected variants on the giant component, directed variants on the
full graph (degree as in+out total, closeness/harmonic following arrows outward), PageRank
(α = 0.85) both ways — and loaded frozen from
data/week3/week3_villains_summary.json.
Directed vs. undirected: it depends which way you look
Wikipedia links have a direction, and treating the network as undirected throws that away. Hulk's
article is linked from 58 other villains' pages but itself links out to only
— a huge asymmetry that changes the answer once
"importance" has to follow arrows.
Recomputing betweenness with arrows respected — a shortest path only counts if it can actually be
walked in the link direction — reshuffles the ranking. Norman Osborn overtakes Hulk for the top
spot, and three specialists surge: Ultron (9 → 5), Super-Adaptoid (13 → 6) and Thunderbolt
Ross (43 → 10):
PageRank surfaces villains outside the in-degree top 10
That second list is PageRank's actual mechanism showing through: Hulk links out to only
villains, so each one inherits an unusually
large slice of his vote — which is how villains like Thunderbolt Ross (PageRank #5 against an
in-degree rank of #16), the Beyonder and Dracula outrank villains with a higher raw in-degree.
Reading this right: neither ranking is "more correct" — they're answers to
different questions. Undirected betweenness asks who bridges the underworld treating every mention
as mutual; directed betweenness asks who bridges it exactly as written, link by link.
Pick any two villains from the 323-villain giant component (the other 47 sit outside it — see Week
2) and find the shortest chain between them. Switch between treating links as mutual or following
them exactly as written; the two modes can disagree, including about whether a path exists at all.
From
To
Mode
Treat connections as mutual when finding paths.
Click a node to set "From"; right-click a node to set "To".
The network below colors every villain by BFS distance from the source (0, 1, 2, 3…); once a
target is chosen, the shortest path between them animates in and the rest of the network fades
back. Everything here is computed live in your browser from the raw villains edge list — a single
BFS on a 323-node graph is effectively instant.
Choose a source villain above.
Villain list, positions and adjacency all come from
data/Marvel_Comics_supervillains/; the layout coordinates come from the same seeded
spring_layout precomputed in analysis/build_week3_villains.py that every
network view on this page reuses, so the shape stays stable as you explore.
High centrality and structural importance aren't automatically the same thing — a villain can rack
up connections without their removal actually breaking anything. To test it directly: remove
villains one at a time, in order of degree, in order of betweenness, or at random, and watch the
giant component shrink.
Removal strategy
Playback
removed =0
Precomputed offline for every strategy, all 323 removal steps — the browser only plays the numbers
back and redraws. The chart shows all three strategies at once for comparison; the network shows
the currently-selected strategy, with removed villains faded out.
Removal orders and the resulting giant-component size at every step come from
fragmentation in data/week3/week3_villains_summary.json, computed once
offline.
Interactive game · same 370-villain network
A clique is a group where everyone is directly connected to everyone else — for
k members, that's k(k−1)/2 links, all of them present. A maximal clique is
one that can't be grown any further: no other villain is connected to every single member.
NetworkX's find_cliques() only ever returns maximal cliques, so picking "4-cliques"
below means groups that max out at exactly 4 — never a 4-member slice carved out of a bigger group
(a slice like that could always be grown back, so it would never come back as its own maximal
clique).
Clique size
Every maximal clique of the selected size is highlighted at once, in the same color; hover or click
one in the list to bring just that clique forward. The rest of the giant component stays visible,
dimmed, for context.
Hover or click a clique to see its members.
Maximal cliques enumerated once offline with networkx.find_cliques() on the undirected
giant component, stored in data/week3/week3_villains_summary.json.
Degree, closeness, harmonic and betweenness agree on a core of six villains in all four
top-10s (Hulk, Norman Osborn, Venom, Deadpool, Black Cat, Apocalypse) — but disagree below that,
about who sits at the top: Norman Osborn owns closeness, harmonic, directed degree and directed
betweenness, while Hulk only owns raw degree and undirected betweenness.
Against 200 degree-preserving shuffles, Deadpool's betweenness (z ≈ 4.3),
Purple Man's (z ≈ 4.2) and Hulk's (z ≈ 3.9) all sit far above what
their degree alone predicts — genuine brokers, not degree artifacts; no shuffled network in 200
draws produced a higher betweenness for any of them. Norman Osborn's (z ≈ 2.6)
is more above-the-null than extreme. The closeness nulls point the other way: Hulk's and Norman
Osborn's real closeness sits below the shuffle mean (z ≈ −7.1 and
−5.8, extreme 200/200) — their link counts come from a tight local cluster, so shuffled
networks spread their degree around and get closer to everyone faster.
Removing Purple Man alone — matching neither the top-degree (Hulk) nor the
top-betweenness (also Hulk) character — fragments the giant component more than removing anyone
else: 323 villains drop to 317, splitting off 2 extra villains (3 pieces total, a 1.5% shrink),
and it's the network's most extreme broker under the null (z ≈ 4.2) despite
being nowhere near the degree top. The effect itself is modest — the giant has 45 articulation
points among its 323 villains, and taking the top 5 by degree or betweenness only shaves it to
310 — but who it is doesn't match either centrality ranking, the one finding that most
cleanly separates "structurally load-bearing" from "merely famous."
The largest cliques are all 6-member, five of them, all drawn from the same Spider-Man
rogue-gallery core (Black Cat, Eddie Brock, Mysterio, Norman Osborn, Tinkerer, Venom present in
every one) — a real, nameable shared neighborhood, visible from the villain names alone without
needing any team-affiliation data this dataset doesn't have.
This underworld is a looser network than its heroes counterpart: diameter 10 against the hero
network's 6, average shortest path 3.55 against 2.67, and a 6-clique against the heroes' 8.
Fewer shared-neighborhood connections per villain means longer chains.
Interpretation:
Different centrality measures are not competing estimates of one true "importance" — they are
different, equally valid questions, and a network with a heavy-tailed degree distribution will
always show large disagreements between them precisely where that distribution is most extreme
(its handful of hubs). Directedness is not a footnote here: it hands the crown to Norman Osborn,
because Wikipedia's own linking behavior is itself asymmetric (see Hulk's 11 outgoing links against
58 incoming). And the network's biggest structural weakness is its own villain — Purple Man —
invisible in the degree and PageRank rankings until you a) ask about shortest paths in edge
direction or b) actually delete him.
Limitations:
This is still a citation network built from one encyclopedia's editorial choices, not the
comics' actual social structure — an untouched villain with a short article will always look
structurally unimportant here regardless of their role in the fiction.
Null-model z-scores test against a degree-preserving shuffle specifically — they say a value
is unusual given the degree sequence, not unusual in any absolute sense, and a
heavy-tailed degree sequence already constrains how assortative or disassortative the network
could possibly be.
No team or decade attribute data was added for this analysis — the clique section's "Spider-Man
rogue gallery" label is a read of the villain names, not a tested homophily claim.
43 of the 370 villains are complete isolates — no link in or out, 12% of the network — all
structurally invisible to every measure above; they only exist in the node list.
📎 Reproducing this: every number above comes from analysis/build_week3_villains.py,
run against the same frozen data/Marvel_Comics_supervillains/ crawl the Week 2
supervillains post used, writing data/week3/week3_villains_summary.json. The
centrality, fragmentation and clique interactives read that file directly; the Six Degrees explorer
is the one piece that recomputes live, straight from the raw edge list, since it has to answer an
arbitrary villain pair chosen in the browser.