Data Analysis — starwars_edges.csv
Interactive scatter plot of the starwars_edges.csv dataset (Star Wars character co-occurrence edges), with a README documenting the dataset schema.
Star Wars Edges Scatter Plot Explorer
An interactive scatter plot of the Star Wars character interaction dataset. Each point is one edge record (a source → target interaction within an episode).
Dataset Overview
- Filename:
data/starwars_edges.csv(loaded at/data/starwars_edges.csv) - Rows: 1013 (as reported by the project)
- Columns: 4
- Description: Edge list of interactions between Star Wars characters, with
the episode in which the interaction occurs and a weight-like
value.
Column Descriptions
| Column | Description | Type (Munzner) | Missing / parsing notes |
|---|---|---|---|
episode |
Star Wars episode number in which the interaction occurs. | Ordinal (ordered episode numbers; used as quantitative position on X) | Parsed as a number; empty or non-numeric values become |
source |
Name of the character initiating the interaction. | Nominal | Trimmed of whitespace; empty values are excluded from color categories. |
target |
Name of the character receiving the interaction. | Nominal | Trimmed of whitespace. |
value |
Numeric weight of the interaction (magnitude as recorded in the source data; exact meaning is not documented in the file). | Quantitative | Parsed as a number; non-numeric values become |
Meanings of value are inferred from the column name and typical edge-list
conventions; they are not confirmed by documentation in the dataset.
Visualization Mappings
- X axis:
episode— the episode is the only ordered discrete identifier with a meaningful numeric order, so it provides a natural horizontal position. - Y axis:
value— the only other quantitative field, giving each edge a vertical magnitude. - Color:
source— the character initiating the interaction. It is nominal with many categories; the color legend lists them and hovering a legend entry fades the other characters.targetandepisodeare available from the Color menu as alternatives.
Because the dataset has only two quantitative fields, the scatter plot's X and
Y menus offer episode and value. Categorical fields are offered only as
color encodings.
Interaction
- Hover a point to see its source, target, episode, and value.
- Hover a legend entry to highlight that category.
- Use the menus to remap axes or color.
- Press
Vto show Voronoi cell borders.
Visualization Ideas
Episode-by-episode interaction volume
- Main question: How does the number of recorded character interactions vary across episodes, helping the social analytics audience compare activity by episode?
- Relevant data fields:
episode(count edge rows). - Suggested visual encoding: A bar chart with episode on the x-axis and the number of edge records on the y-axis.
- Interaction or annotation: Hover a bar to show its episode and exact edge count.
- Implementation note: Load
/data/starwars_edges.csvwithd3.csv()and count rows by parsedepisode; this measures records, not unique relationships.
Total interaction value by episode
- Main question: How does the recorded magnitude of interactions change across episodes?
- Relevant data fields:
episode,value. - Suggested visual encoding: A column chart of summed
valuefor each episode, with episode on the x-axis. - Interaction or annotation: Add a toggle between sum and mean so viewers can distinguish aggregate magnitude from average edge value.
- Implementation note: Parse numeric fields from the loaded CSV and aggregate
valuebyepisode; describe the measure as recorded value because its meaning is undocumented.
Distribution of edge values by episode
- Main question: Are interaction values typically similar across episodes, or do some episodes contain more extreme records?
- Relevant data fields:
episode,value. - Suggested visual encoding: A box plot for each episode, showing median, quartiles, and range of
value. - Interaction or annotation: Hover a box to reveal its record count and summary statistics.
- Implementation note: Compute summaries from finite
valuerecords grouped byepisode; do not interpret the values beyond their recorded magnitude.
Interaction value over episode, with record-level detail
- Main question: Which individual interaction records have relatively high or low values, and where do they occur in the episode sequence?
- Relevant data fields:
episode,value,source,target. - Suggested visual encoding: Retain the current scatter plot:
episodeon x,valueon y, and charactersourceas color. - Interaction or annotation: Use the existing Voronoi hover tooltip to show
source → target, episode, and value; let viewers switch color totargetorepisode. - Implementation note: Use the existing data-driven scatter plot and encodings; avoid adding character fields as numeric axes.
Most frequent sources
- Main question: Which characters most often appear as the initiating
sourcein the recorded interactions? - Relevant data fields:
source(count edge rows). - Suggested visual encoding: A sorted horizontal bar chart of records per source character.
- Interaction or annotation: Selecting a character highlights that source’s records and shows the corresponding episode and target details.
- Brief implementation note: Count loaded CSV rows by
source; label results as source-record frequency, not as a measure of overall character importance.
- Main question: Which characters most often appear as the initiating
Most frequent targets
- Main question: Which characters most often appear as the receiving
target? - Relevant data fields:
target(count edge rows). - Suggested visual encoding: A sorted horizontal bar chart, distinct from the source ranking, of records per target.
- Interaction or annotation: Link each bar to a filtered list or scatter plot of its incoming edge records.
- Brief implementation note: Group rows by
targetand count them; keep source and target roles explicit because they are not interchangeable fields.
- Main question: Which characters most often appear as the receiving
Character role comparison
- Main question: For each character, how do their observed initiating and receiving record counts compare?
- Relevant data fields:
source,target(count edge rows for each role). - Suggested visual encoding: A dumbbell plot with one position for source count and one for target count per character.
- Interaction or annotation: Sort by either role count and highlight a selected character’s records in both roles.
- Brief implementation note: Derive the character list from observed
sourceandtargetvalues, then compute the two counts from the edge list; do not call these measures of influence.
Most common directed character pairs
- Main question: Which exact
source → targetpairs recur most often in the records? - Relevant data fields:
source,target(count matching edge rows). - Suggested visual encoding: A ranked horizontal bar chart of directed pairs, with bar length representing record count.
- Interaction or annotation: Selecting a pair filters the detail view to its records by
episodeandvalue. - Brief implementation note: Group by both
sourceandtargetwithout collapsing direction; derive all pairs from the loaded CSV.
- Main question: Which exact
Character-to-character interaction matrix
- Main question: Which character pairs have recorded edges, and how does the recorded value or count vary between them?
- Relevant data fields:
source,target,value. - Suggested visual encoding: A matrix with source characters as rows and target characters as columns; use cell color for edge count and allow switching to summed
value. - Interaction or annotation: Hover a cell to list its episode records; provide character search to navigate a large matrix.
- Brief implementation note: Build row and column categories from observed names. Clearly label whether the cell shows count or summed recorded value.
Bipartite source–target network
- Main question: How are initiating and receiving roles connected across the dataset?
- Relevant data fields:
source,target,value,episode. - Suggested visual encoding: A bipartite network with source-role nodes on one side and target-role nodes on the other; edge width represents record count or summed
value. - Interaction or annotation: Hover an edge to show its pair and records; filter by episode.
- Brief implementation note: Keep the two role columns distinct in the layout, even when a character name occurs in both roles; derive edges and totals from the CSV.
Force-directed character network
- Main question: What overall pattern of recorded connections emerges when characters and their interactions are viewed together?
- Relevant data fields:
source,target,value,episode. - Suggested visual encoding: A force-directed network with character nodes and directed edges; use arrows for source-to-target direction and optionally scale width by edge count.
- Interaction or annotation: Hover a node to highlight its incident edges; select an episode to show only records from that episode.
- Brief implementation note: Construct nodes from observed names and links from the edge list. State that the layout reflects the chosen algorithm, not a measured social distance.
Episode-filtered network small multiples
- Main question: How does the pattern of recorded character-to-character links differ from one episode to another?
- Relevant data fields:
episode,source,target,value. - Suggested visual encoding: Small-multiple directed networks, one panel per episode, using consistent node identities and edge encoding.
- Interaction or annotation: Hover a link to display its source, target, episode, and value.
- Brief implementation note: Split loaded records by
episode; use consistent scales where possible and avoid implying a node or edge is absent from the story merely because it is absent from that episode’s records.
Episode filter for record exploration
- Main question: Which source–target records and values appear in the episode a viewer wants to examine?
- Relevant data fields:
episode,source,target,value. - Suggested visual encoding: An episode selector linked to the current
episode-by-valuescatter plot. - Interaction or annotation: Selecting an episode filters points and updates a count of visible records; retain tooltips for pair details.
- Brief implementation note: Filter the loaded rows by
episodeand use the existing scatter plot scales and tooltip behavior.
Episode-by-character activity heatmap
- Main question: Which characters appear most frequently in records in each episode, either as source or as target?
- Relevant data fields:
episode,source,target(count edge-row appearances by role). - Suggested visual encoding: A heatmap with episodes on one axis and characters on the other; color shows record appearances, with a role switch for source versus target.
- Interaction or annotation: Hover a cell to show its count; clicking it filters to the matching episode and role.
- Brief implementation note: Derive character names and episode values from the data and count one selected role at a time so each cell has a clear definition.
Episode sequence of a selected directed pair
- Main question: In which episodes is a particular
source → targetpair recorded, and what values are attached to those records? - Relevant data fields:
source,target,episode,value. - Suggested visual encoding: A selected-pair dot plot with episode on the x-axis and
valueon the y-axis. - Interaction or annotation: Choose the pair from observed names; use point tooltips to reveal the record details.
- Brief implementation note: Filter the CSV to the selected ordered pair. Preserve multiple records rather than assuming one record per pair and episode.
- Main question: In which episodes is a particular
Value concentration and outliers
- Main question: Are recorded values concentrated in a small portion of edge records, or spread more evenly?
- Relevant data fields:
value,source,target,episode. - Suggested visual encoding: A sorted dot plot of individual records by
value, with points colored by episode or source. - Interaction or annotation: Hover high- and low-value points to inspect the corresponding pair and episode; offer an episode filter.
- Brief implementation note: Sort finite values for display and retain row-level tooltips. Avoid labeling records as causal or significant based on
valuealone.
Source–target flow diagram
- Main question: Which source and target groups account for the largest recorded flows between character roles?
- Relevant data fields:
source,target,value. - Suggested visual encoding: A Sankey-style diagram with source nodes on the left, target nodes on the right, and link width representing edge count or summed recorded
value. - Interaction or annotation: Hover a link to show the pair and selected aggregation; switch between count and sum.
- Brief implementation note: Build the flow from observed directed pairs and explicitly label the link-width metric; do not treat
valueas a known causal strength.
Episode-by-pair interaction timeline
- Main question: How are recorded directed pairs distributed across the episode sequence?
- Relevant data fields:
episode,source,target,value. - Suggested visual encoding: A timeline with episode on the x-axis and one row per selected directed pair; mark each recorded edge, with size or color encoding
value. - Interaction or annotation: Search or select pairs from the dataset and show pair details on hover.
- Brief implementation note: Generate the timeline from actual edge records and support pair filtering to keep the display readable; do not infer interactions in episodes without a row.
Value versus record frequency for directed pairs
- Main question: Do pairs with more records also have higher summed recorded values?
- Relevant data fields:
source,target,value(derive record count and summedvalueper pair). - Suggested visual encoding: A scatter plot with pair record count on x and summed
valueon y; use labels or color for selected directed pairs. - Interaction or annotation: Hover a point to show its
source → target, record count, and value sum; allow filtering to one episode. - Brief implementation note: Compute pair-level aggregates from the loaded rows and label both axes as derived summaries, with no assumption about the underlying meaning of
value.
Linked overview and detail dashboard
- Main question: How can the audience move from overall episode patterns to the specific character records behind them?
- Relevant data fields:
episode,source,target,value. - Suggested visual encoding: Combine episode-level interaction counts, a
value-by-episode scatter plot, and a compact source–target pair ranking in coordinated views. - Interaction or annotation: Brushing an episode range or selecting a character or pair filters the other views; a reset control restores all loaded records.
- Brief implementation note: Derive every panel from the same CSV rows and keep selections synchronized; label the record-count and recorded-value measures distinctly.
References
Inspired by:
- Interactive Scatter Plot — Visualization nk2fwdG0qh1d5PXbpwNhr
The reference implementation's structure (context providers, D3-in-React render functions, Voronoi hit-testing, and the horizontal color legend) was adapted to this dataset. The reference's own dataset and data-specific columns were not reused.
Comments
Sign in to join the discussion.