episode/
search/mongodb/
map/
process.html
: Builds keyValues.json
from episodes.json
by adding y-values and additional location-specific information and outputs the data for keyValues.json
.index.html
: Builds the visualization using d3.js and outputs the Game of Thrones narrative chart.Note: map contains spoilers.
heatmap/
calcData
parameter that pre-processes the data for data/heatmap.json
.Inspired by Hubble Image of Galaxy Cluster Converted Into Sound.
scenes-character/
scenes-location/
scenes-sublocation/
scenes-special/
bubble-death/
scenes-weapons/
scenes-house/
characters-per-scene/
bubble-character/
Circles are color-coded by House.
duration-character/
duration-per-season/
episode-character/
Based on Harry Stevens's Linear Regression for Scatter Plot.
duration-per-location/
duration-per-sublocation/
duration-percent/
duration-treemap/
Based on takayuki's Treemap in d3 v4.
duration-house/
region-percent/
location-per-episode/
duration-gender-season/
Based on wpoely86's Diverging Stacked Bar Chart.
duration-gender-episode/
Based on wpoely86's Diverging Stacked Bar Chart.
duration-gender-percent/
Based on wpoely86's Diverging Stacked Bar Chart.
wordcount-character/
wordcount-per-season/
wordcount-house/
wordcount-gender-season/
Based on wpoely86's Diverging Stacked Bar Chart.
wordcount-gender-episode/
Based on wpoely86's Diverging Stacked Bar Chart.
wordcount-gender-percent/
Based on wpoely86's Diverging Stacked Bar Chart.
language-character/
language-episode
matrix/
force-directed/
Based on heybignick's d3 v4 force-directed graph.
matrix-chord/
Based on HenryLau's chord diagram on JSFiddle.
relations-force/
Parent-child (solid gray), spouse (dashed blue), and killed by (solid black arrow) relationships shown. Based on Mike Bostock's Labeled Force Layout.
relations-circle/
Parent-child (solid gray), spouse (dashed blue), and killed by (solid black arrow) relationships shown. Based on an HBO infographic.
relations-force-sex/
Based on a Cool Material infographic.
costars-list/
Data last pulled following Season 7.
costars-matrix/
Data last pulled following Season 7. Based on Mike Bostock's Les Misérables Co-occurrence.
opening-locations-force/
Based on heybignick's d3 v4 force-directed graph.
opening-locations-fixed/
Based on the A Song of Ice and Fire Wiki geography.
geography-locations/
Adapted from Jason Davies' "Rotate the World".
opening-seq-arcs/
Adapted from Andrew Mollica's "World Tour along Flying Arcs".
opening-seq-matrix/
Adapted from Andrew Mollica's "World Tour along Flying Arcs".
character-arcs/
Adapted from Andrew Mollica's "World Tour along Flying Arcs".
episode-character-scatter/
Adapted from Harry Stevens's Linear Regression for Scatter Plot.
data/episodes.json
{
"episodes": [
{
"seasonNum": integer,
"episodeNum": integer,
"episodeTitle": "string", // from imdb
"episodeLink": "string", // endpoint: www.imdb.com
"episodeAirDate": "string", // from imdb
"episodeDescription": "string", // from imdb
"openingSequenceLocations": [
"string",
...
],
"scenes":[
{
"sceneStart": "string",
"sceneEnd": "string",
"location": "string",
"subLocation": "string",
"altLocation": "string",
"flashback": Boolean,
"greensight": Boolean,
"warg": Boolean,
"characters": [
{
"name": "string",
"title": "Hand | Khal | Khaleesi | King",
"alive": Boolean,
"born": Boolean,
"weapon": [
{
"action": "string",
"name": "string"
}
],
"sex": {
"with": [
"string"
],
"when": "string",
"type": "string"
},
"married": {
"to": "string",
"when": "string",
"type": "string",
"consummated": Boolean
},
"mannerOfDeath": "string",
"killedBy": [
"string"
]
},
...
]
},
...
]
},
...
]
}
data/characters.json
{
"characters":[
{
"characterName": "string",
"characterLink": "string", // endpoint: www.imdb.com
"characterImageThumb": "string",
"characterImageFull": "string",
"actorName": "string", // OR actors: []
"actors": [
{
"actorName":"Richard Dormer",
"actorLink":"/name/nm0233807/",
"seasonsActive":[
integer,
...
]
},
...
],
"actorLink": "string", // endpoint: www.imdb.com
"houseName": [
"string", // just string if single value
...
],
"nickname": "string",
"royal": Boolean,
"kingsguard": Boolean,
"parents": [
"string",
...
],
"parentOf": [
"string",
...
],
"guardianOf": [
"string",
...
],
"guardedBy": [
"string",
...
],
"siblings": [
"string",
...
],
"marriedEngaged": [
"string",
...
],
"allies":[
"string",
...
],
"abducted":[
"string",
...
],
"killed": [
"string",
...
],
"killedBy": [
"string",
...
],
"serves": [
"string",
...
]
"servedBy": [
"string",
...
]
},
...
]
}
data/characters-groups.json
{
"group": [
{
"name": "string",
"characters": [
"string",
...
]
},
...
]
}
data/characters-include.json
{
"include":[
{
"name": "string",
"include": Boolean
},
...
]
}
data/locations.json
{
"regions":[
{
"location": "string",
"subLocation": [
"string",
...
]
},
...
]
}
data/characters-gender-all.json
{
"male": [
"string",
...
],
"female": [
"string",
...
]
}
data/characters-gender.json
{
"gender": [
{
"gender":"male",
"characters": [
"string",
...
]
},
{
"gender":"female",
"characters": [
"string",
...
]
}
]
}
data/colors.json
{
"colors": [
{
"name": "string",
"hexadecimal": "string",
"webSafe": "string",
"basic": "string",
"rgb": "string",
"class": [
"string"
],
"css": {
"stroke-width": "string",
"stroke-dasharray": "string",
"stroke-linecap": "string"
}
},
...
]
}
data/costars.json
{
"IMDB_ID": {
"imdb_id": "string",
"title": "string",
"year": "string",
"actors": [
{
"personID": "string",
"actorName": "string",
"characterName": "string"
},
...
]
},
...
}
data/heatmap.json
A pre-processed file for the heatmap/
visualization:
[
{
"name": "string",
"count": [
{
"x1": integer,
"x2": integer,
"z": integer
},
...
]
},
...
]
data/keyValues.json
A pre-processed file for the map/
visualization:
{
"characters": {
"CharacterName": {
"key": "string",
"values": [
{
"s": integer,
"e": integer,
"y": integer
},
...
]
},
...
},
"episodes": [
{
"seasonNum": integer,
"length": integer,
"shift": integer,
"episodes":[
{
"episodeNum": integer,
"length": integer,
"episodeTitle": "string",
"shift": integer
},
...
]
},
...
],
"locations": [
{
"name": "string",
"max": integer,
"middle": integer
},
...
],
"sublocations": [
{
"name": "string",
"max": integer,
"middle": integer
},
...
]
}
data/lands-of-ice-and-fire.json
A GeoJSON file for geographic visualizations.
// It's better to just go look at the file if you're curious.
data/opening-locations.json
A data file for the opening-locations-fixed/
visualization:
{
"note": "string",
"locations": [
{
"name": "string",
"fx": float,
"fy": float
},
...
]
}
data/wordcount-gender.json
{
"male": [
"string",
...
],
"female": [
"string",
...
],
"crowd": [
"string",
...
]
}
data/wordcount-synonyms.json
A working file to rename characters in the script.
{
"synonyms": [
{
"accepted": "string",
"alt": [
"string",
...
]
},
...
],
"groups": [
"string",
...
],
"others": [
"string",
...
]
}
data/wordcount.json
{
"count": [
{
"episodeAlt": "string",
"seasonNum": integer,
"episodeNum": integer,
"episodeTitle": "string",
"text": [
{
"name": "string",
"count": integer,
"lang": "string", // optional
"type": "string" // optional
},
...
]
},
...
]
}
data/script-bag-of-words.json
{
"count": [
{
"episodeAlt": "string",
"seasonNum": integer,
"episodeNum": integer,
"episodeTitle": "string",
"text": [
{
"name": "string",
"text": "string",
"lang": "string", // optional
"translation": "string", //optional
"type": "string" // optional
},
...
]
},
...
]
}
Feel free to take an use this data however you'd like. It's provided as is, is a creative work, and is probably not perfectly accurate.
I only ask that you cite this repository if you do post/publish/share something you make using the data, and that you let me know (on Github or by email) about what you've made.