Who matters, how far apart we are, and what breaks when they're gone

Four ways to ask "who's important," a general shortest-path explorer, a node-removal fragmentation test, and the tightest cliques in the network — every number checked against a degree-preserving-shuffle null before it gets to call itself a finding.

What does it mean to be important in a network?

↑

"Important" is not one thing. A character can be important because a lot of other characters link to them, because they sit close to everyone else, because they're the bridge that holds two otherwise-unconnected parts of the story together, or because the important characters 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 303-character, 1,784-edge frozen snapshot from data/week1/ that Week 1 and Week 2 used. No new data, no team or decade labels — just paths, four centrality measures plus PageRank, degree-preserving-shuffle null models, node removal, and maximal cliques, computed offline in analysis/build_week3.py and loaded frozen from data/week3/week3_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.

Who is important?

↑

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 (277 characters, treating a link either direction as a connection) and the full directed network (303 characters, following Wikipedia's links exactly as written). Use the Measure and Scope switches together to compare.

The top 15 by the selected measure, on the left; the same characters sized and colored on the network, on the right (the rest of the 277-character 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 character, including a null-model comparison where one was computed.

    Click a character above to inspect their numbers.

    Values computed once, offline, in analysis/build_week3.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_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. Spider-Man's article is linked from 106 other characters' 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. Wolverine and Hercules both move ahead of Spider-Man:

    Undirected betweenness rank → directed betweenness rank

      PageRank surfaces characters outside the in-degree top 10

        That second list is PageRank's actual mechanism showing through: Spider-Man links out to only characters, so each one inherits an unusually large slice of his vote — which is how characters like Black Cat and Mayday Parker outrank characters 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 story treating every mention as mutual; directed betweenness asks who bridges it exactly as written, link by link.

        Six Degrees of Marvel

        ↑

        Pick any two characters from the 277-character giant component (the other 26 sit outside it — see Week 1) 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.

        The network below colors every character 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 Week 1 edge list — a single BFS on a 277-node graph is effectively instant.

        Choose a source character above.

        Character list, positions and adjacency all come from data/week1/; the layout coordinates come from the same seeded spring_layout precomputed in analysis/build_week3.py that every network view on this page reuses, so the shape stays stable as you explore.

        Who holds the network together?

        ↑

        High centrality and structural importance aren't automatically the same thing — a character can rack up connections without their removal actually breaking anything. To test it directly: remove characters one at a time, in order of degree, in order of betweenness, or at random, and watch the giant component shrink.

        removed = 0

        Precomputed offline for every strategy, all 277 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 characters faded out.

        Removal orders and the resulting giant-component size at every step come from fragmentation in data/week3/week3_summary.json, computed once offline.
        Interactive game · same 303-character network

        Save the Marvel Network →

        A villain is taking heroes offline. You get three attempts to identify the characters whose removal fragments the network the most — then see how your picks measure up against the real degree, betweenness and random-removal numbers above.

        The tightest circles

        ↑

        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 character 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).

        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_summary.json.

          What the measurements show

          ↑

          Observed:

          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 changes who counts as a broker, because Wikipedia's own linking behavior is itself asymmetric (see Spider-Man's 9 outgoing links against 106 incoming).

          Limitations:

          📎 Reproducing this: every number above comes from analysis/build_week3.py, run against the same frozen data/week1/ Week 1 and Week 2 use, writing data/week3/week3_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 character pair chosen in the browser.
          ← Back to all weeks