Posting asli + Fungsi pendukung dan sumber dataDaftar isi
Hubungan Karakter-
Siapa yang melahirkan siapa?-
Siapa kepada siapa saudara laki-laki atau perempuan-
Siapa yang membunuh siapa?-
Siapa yang melayani siapa?-
Siapa yang menikah dengan seseorang atau bertunangan-
Siapa yang melakukan hubungan seks dengan siapa?-
Semua hubungan pada satu kolomMenautkan karakter dengan adeganSiapa karakter paling populer dari Game of Thrones?-
Jumlah waktu layar untuk karakter-
Berapa banyak karakter dalam seri?-
Manakah dari karakter dalam jumlah terbesar episode Game of Thrones?Lokasi paling populer "Game of Thrones"-
Peta lokasi "Game of Thrones"-
Memindahkan karakter Game of Thrones dari seri ke seri-
Siapa yang “paling sering bepergian” dari karakter “Game of Thrones”?-
Lokasi paling populer "Game of Thrones" (di layar waktu)Film apa yang dimainkan oleh para aktor Game of Thrones dan seberapa familiar mereka?-
Film di mana aktor paling populer dari Game of Thrones bermain:-
Aktor Game of Thrones di Harry Potter-
Aktor Game of Thrones di Star Wars-
Aktor Game of Thrones di Pirates of the Caribbean-
Di mana film / seri ada banyak aktor "Game of Thrones"-
Seberapa dekat aktor Game of Thrones saling berhubunganPercakapan dalam Game of ThronesKarakter Gender of Game of Thrones: siapa yang lebih, pria atau wanita?
Dalam posting ini, saya akan berbicara tentang bagaimana menggunakan bahasa Langram Wolfram dalam analisis dan visualisasi data menggunakan database Game of Thrones sebagai contoh. Artikel ini tidak terlalu memperhatikan penguraian data, saya akan membicarakan hal ini secara terpisah. Alih-alih, pos ini sepenuhnya dikhususkan untuk infografis yang menarik dan pembuatannya.
Saya berharap bahwa visualisasi yang dibangun akan menarik minat orang-orang yang menyukai seri indah ini).
Infografis yang dibuat untuk posting bersifat interaktif dalam dokumen Mathematica, yang dapat diunduh dari tautan di header.
Hubungan Karakter
Seperangkat tepi dalam grafik hubungan karakter berdasarkan jenis:
$GOTCharacterLinks= Module[{parser}, parser= Flatten[ Thread/@ DeleteCases[ Lookup[ GOTRawData["characters.json"][ "characters" ], {"characterName",#} ], {_,_Missing} ], 1 ]&; <| "" -> Union[ DirectedEdge[#[[2]],#[[1]]]&/@parser["parents"], DirectedEdge[#[[1]],#[[2]]]&/@parser["parentOf"] ], "" -> DeleteDuplicates[ UndirectedEdge[#[[2]],#[[1]]]&/@parser["siblings"], #1===Reverse[#2]& ], ""-> Union[ DirectedEdge[#[[2]],#[[1]]]&/@parser["killedBy"], DirectedEdge[#[[1]],#[[2]]]&/@parser["killed"] ], ""->(DirectedEdge[#[[1]],#[[2]]]&/@parser["serves"]), "" -> DeleteDuplicates[ UndirectedEdge[#[[1]],#[[2]]]&/@parser["marriedEngaged"], #1===Reverse[#2]& ], ""-> DeleteDuplicates[ Flatten[ Map[ Thread@UndirectedEdge[#[[1]],#[[2]]["with"]]&, Lookup[#,{"name","sex"}]&/@ Select[ Select[ Flatten[ Lookup[ Flatten[ GOTRawData[ "episodes.json" ][ "episodes" ][ [;;,"scenes"] ], 1 ], "characters" ] ], Keys[#]=!={"name"}& ], MemberQ[Keys[#],"sex"]& ] ] ], #1===Reverse[#2]& ]|> ];
GOTCharacterLinksGraph berfungsi untuk menggambar hubungan karakter dari Game of Thrones.
ClearAll[GOTCharacterLinksGraph]; GOTCharacterLinksGraph[ data_, OptionsPattern[ { "ImageSize"->1500, "VertexSize"->Automatic, "GraphLayout"->"GravityEmbedding" } ] ]:= Module[{vertexList}, vertexList= DeleteDuplicates[Flatten[data[[;;,1]]/._[x_,y_]:>{x,y}]]; Graph[ data, VertexLabels-> Map[ Rule[ #, Placed[ Tooltip[ If[ Head[#]===Image, Image[#,ImageSize->60], (* else *) Style[ StringReplace[#," "->"\n"], LineSpacing->{0.8,0,0}, FontFamily->"Open Sans Light", Bold, 12 ] ]&[ #/.$characterImage ], #/.$characterCardFull ], {1/2,1/2} ] ]&, vertexList ], VertexShapeFunction->"Circle", VertexSize->OptionValue["VertexSize"], VertexStyle-> Directive[ {White,EdgeForm[{LightGray,AbsoluteThickness[2]}]} ], ImageSize->OptionValue["ImageSize"], Background->GrayLevel[0.95], AspectRatio->1, GraphLayout->OptionValue["GraphLayout"] ] ];
Kami mencari tahu siapa yang melahirkan siapa di Game of Thrones:
GOTInfographicsPoster[ #, " \" \"", "ImageSize" -> 1500 ] &@ GOTCharacterLinksGraph[ Property[ #, { EdgeStyle -> Directive[ { AbsoluteThickness[2], Blue, Arrowheads[{0, {0.01, 0.5}}] } ] } ] & /@ $GOTCharacterLinks[""], "VertexSize" -> 3 ]

Sekarang mari kita lihat siapa saudara lelaki atau perempuan yang ada di dalam Game of Thrones:
GOTInfographicsPoster[ #," \" \"","ImageSize"->1500 ]&@ GOTCharacterLinksGraph[ Property[ #, {EdgeStyle->Directive[{AbsoluteThickness[2],Darker@Green}]} ]&/@ $GOTCharacterLinks[""], "VertexSize"->0.7, "GraphLayout"->Automatic ]

Salah satu yang paling menarik: jumlah pembunuhan di "Game of Thrones":
GOTInfographicsPoster[ #," \" \"","ImageSize"->2500 ]&@ GOTCharacterLinksGraph[ Property[ #, { EdgeStyle-> Directive[ { AbsoluteThickness[2], Black, Arrowheads[{0,{0.0075,0.5}}] } ] } ]&/@ $GOTCharacterLinks[""], "VertexSize"->1.1, "ImageSize"->2500 ]

(
asli )
Tidak begitu menarik, tapi tetap saja - siapa yang melayani siapa di Game of Thrones:
GOTInfographicsPoster[ #," \" \"","ImageSize"->1000 ]&@ GOTCharacterLinksGraph[ Property[ #, { EdgeStyle-> Directive[ { AbsoluteThickness[2], Magenta, Arrowheads[{0,{0.02,0.5}}] } ] } ]&/@ $GOTCharacterLinks[""], "VertexSize"->0.5, "ImageSize"->1000, "GraphLayout"->Automatic ]

Karakter yang terlibat dan sudah menikah dari Game of Thrones:
GOTInfographicsPoster[ #, " \" \"", "ImageSize"->1000 ]&@ GOTCharacterLinksGraph[ Property[ #,{EdgeStyle->Directive[{AbsoluteThickness[2],Orange}]} ]&/@ $GOTCharacterLinks[""], "VertexSize"->0.5, "ImageSize"->1000, "GraphLayout"->Automatic ]

Sedikit lebih panas - yang berhubungan seks dengan siapa di Game of Thrones (jumlah baris, saya pikir, tidak sulit untuk menebak apa artinya;)).
GOTInfographicsPoster[#, " \" \"", "ImageSize" -> 1300] &@ GOTCharacterLinksGraph[ Property[#, {EdgeStyle -> Directive[{AbsoluteThickness[2], Red}]}] & /@ $GOTCharacterLinks[""], "VertexSize" -> 0.9, "ImageSize" -> 1300, "GraphLayout" -> "LayeredDigraphEmbedding" ]

Sekarang kita akan mengurangi semua grafik menjadi satu grafik besar hubungan karakter dalam "Game of Thrones":
GOTInfographicsPoster[ #, " \" \"", "ImageSize"->3000 ]&@ Legended[ GOTCharacterLinksGraph[ Join[ Property[ #, { EdgeStyle-> Directive[ { AbsoluteThickness[3], Blue, Arrowheads[{0,{0.005,0.5}}] } ] } ]&/@ $GOTCharacterLinks[""], Property[ #, { EdgeStyle-> Directive[ {AbsoluteThickness[3],Darker@Green} ] } ]&/@ $GOTCharacterLinks[""], Property[ #, { EdgeStyle-> Directive[ { AbsoluteThickness[3], Black, Arrowheads[{0,{0.005,0.5}}] } ] } ]&/@ $GOTCharacterLinks[""], Property[ #, { EdgeStyle-> Directive[ { AbsoluteThickness[1], Magenta, Arrowheads[{0,{0.005,0.5}}] } ] } ]&/@ $GOTCharacterLinks[""], Property[ #, { EdgeStyle-> Directive[{AbsoluteThickness[2],Orange}] } ]&/@ $GOTCharacterLinks[""], Property[ #, {EdgeStyle->Directive[{AbsoluteThickness[3],Red}]} ]&/@ DeleteDuplicates[$GOTCharacterLinks[""]] ], "ImageSize"->3000, "VertexSize"->0.9 ], Placed[ LineLegend[ {Blue,Darker@Green,Black,Magenta,Orange,Red}, { " ", " ", "", "", " ", "" }, LegendLayout->"Row" ], Top ] ]

(
asli )
Menautkan karakter dengan adegan
Mari kita lihat karakter mana yang muncul di adegan yang sama. Setiap tepi antara karakter berarti bahwa mereka berada dalam adegan yang sama. Semakin tebal dan semakin merah tulang rusuk, semakin sering terjadi adegan.
Mari kita membuat beberapa grafik: yang pertama menunjukkan koneksi dengan jumlah adegan minimum 2. Selanjutnya, 5, 10 dan 20.
Table[ Print[ GOTInfographicsPoster[ GOTGraphPlot[ #, min, "ImageSize"->Which[min==1,5000,min==4,3000,True,2000], "MaxThickness"->25 ], " \" \" " <> ToString[min+1] <> " ", "ImageSize"->Which[min==1,5000,min==4,3000,True,2000] ]&@ Tally[ UndirectedEdge@@@ Map[ Sort, Flatten[ Map[ Subsets[#,{2}]&, Map[ #[[;;,"name"]]&, Flatten[ Lookup[ GOTRawData[ "episodes.json" ][ "episodes" ], "scenes" ] ][ [;;,"characters"] ] ] ], 1 ] ] ] ], {min,{1,4,9,19}} ];

(
asli )



Siapa karakter paling populer dari Game of Thrones?
Untuk menjawab pertanyaan ini, buat variabel
$ GOTEpisodeData di mana kami akan
menempatkan satu set data adegan yang dihapus untuk setiap episode Game of Thrones.
$GOTEpisodeData= With[{data=#}, <| "EpisodeN"->#[[1]], "ScreenTime"-> SortBy[ GroupBy[ Flatten[ ReplaceAll[ Thread/@ Transpose[ { Map[ Lookup[#[[1]],"name"]&, #[[2]] ], Round@ Map[ QuantityMagnitude[ UnitConvert[ Subtract@@ ( TimeObject/@ #[ [ { 3, 2 } ] ] ), "Seconds" ] ]&, #[[2]] ] } ], {Missing["KeyAbsent","name"],x_} :> {{"",x}} ]&@ data, 1 ], First, #[[;;,2]]& ], -Total[#]& ], "LocationTime" -> SortBy[ GroupBy[ Flatten[ ReplaceAll[ Thread/@ Transpose[ { Map[{#[[{4,5}]]}&,#[[2]]] /. Missing["KeyAbsent","subLocation"]-> Nothing, Round@ Map[ QuantityMagnitude[ UnitConvert[ Subtract@@ ( TimeObject/@ #[ [ { 3, 2 } ] ] ), "Seconds" ] ]&, #[[2]] ] } ], {Missing["KeyAbsent","name"],x_} :> {{"",x}} ]&@ data, 1 ], First, #[[;;,2]]& ], -Total[#]& ], "CharacterLocations"-> GroupBy[ DeleteCases[ #/.Missing["KeyAbsent","subLocation"]->Nothing, _Missing ]&@ Flatten[ Map[ With[{location=#[[2]]}, {#,location}&/@#[[1]] ]&, Transpose[ { Map[Lookup[#[[1]],"name"]&,#[[2]]], #[[2,;;,{4,5}]] } ] ], 1 ], First, #[[;;,2]]& ]|> ]&/@ DeleteCases[ Map[ { #[[{1,2}]], Lookup[ #[[3]], { "characters", "sceneStart", "sceneEnd", "location", "subLocation" } ] }&, Lookup[ GOTRawData["episodes.json"]["episodes"], {"seasonNum","episodeNum","scenes"} ] ], {_,{_Missing...}} ];
Contoh data untuk episode pertama musim pertama:

Jumlah waktu layar untuk karakter
30 karakter Game of Thrones dengan waktu layar terbanyak:
GOTInfographicsPoster[ #, "30 , ", "ImageSize"->1500 ]&@ circleInfographics[ { Tooltip[ Row[ { #[[1]]/.$characterImage, Style[#[[1]],14,White,Bold], Style[ UnitConvert[ Quantity[#[[2]],"Seconds"], MixedUnit[ {"Hours","Minutes","Seconds"} ] ], 14, White ] }, "\n" ], #[[1]]/.$characterCardFull ], #[[2]] }&/@ KeyValueMap[ {#1,#2}&, SortBy[ Merge[ $GOTEpisodeData[[All,"ScreenTime"]], Total[Flatten[#]]& ], -#& ] ][ [1;;30] ], "Precision"->10^-6, "StepDecrease"->0.99, "ShapeFunction"->Disk, "ColorFunction"->ColorData["Rainbow"], "ImageSize"->1500 ]

(
asli )
Kami tidak akan menghilangkan yang lain dan membangun meja besar:
GOTInfographicsPoster[ #, "550+ ", "ImageSize"->1500, "ImageResolution"->150 ]&@ Multicolumn[ Style[ Row[{#[[1]]," \[LongDash] ",#[[2]]," c"}],FontFamily->"Myriad Pro",8 ]&/@ KeyValueMap[ {#1,#2}&, SortBy[ Merge[ $GOTEpisodeData[[All,"ScreenTime"]], Total[Flatten[#]]& ], -#& ] ], 6 ]

(
asli )
Berapa banyak karakter dalam seri ini?
$ GOTEpisodeN -
Mengonversi seri dari format
{musim, nomor seri dari suatu seri} menjadi hanya nomor seri dari suatu seri di seluruh seri.
$GOTEpisodeN= <| Thread[ Rule[#,Range[Length[#]]]&@$GOTEpisodeData[[All,"EpisodeN"]] ]|>;
$ GOTEpisodeID adalah operasi yang terbalik dari
$ GOTEpisodeN .
$GOTEpisodeID= <| Thread[ Rule[Range[Length[#]],#]&@$GOTEpisodeData[[All,"EpisodeN"]] ]|>;
Mari kita membangun histogram dari jumlah karakter yang terlibat dalam setiap seri Game of Thrones
GOTInfographicsPoster[ #, " \" \"", "ImageSize"->1000 ]&@ BarChart[ #, BarSpacing->{0.05,2}, AspectRatio->1/2, ImageSize->1000, ChartLabels->{Keys[#],Range[10]}, ColorFunction->Function[{x},ColorData["Rainbow"][x]], GridLines->{None,Range[0,100,5]}, FrameLabel-> Map[ Style[#,FontFamily->"Open Sans",20,Bold]&, { " ", " " } ], Frame->True, Background->GrayLevel[0.95] ]&@ GroupBy[ Map[ {#["EpisodeN"],Length[#["ScreenTime"]]}&, $GOTEpisodeData[[All,{"EpisodeN","ScreenTime"}]] ], #[[1,1]]&, #[[;;,2]]& ]

Manakah dari karakter yang berada dalam jumlah terbesar episode Game of Thrones?
Daftar karakter Game of Thrones, diurutkan berdasarkan jumlah episode di mana mereka bertemu:
$GOTCharacters= DeleteCases[ Reverse[ SortBy[ Tally[ Flatten[Keys@$GOTEpisodeData[[All,"ScreenTime"]]] ], Last ] ][ [;;,1] ], "" ];
Jumlah episode dalam satu musim:
$GOTSeriesInSeason= <| KeyValueMap[#1->Length@#2&,GroupBy[$GOTEpisodeData[[;;,1]],First]]|>;
"Topeng" musim ini (simbol resmi):
$GOTSeasonsMask=KeyValueMap[ConstantArray[#1,#2]&,$GOTSeriesInSeason];
GOTCharacterBySeason menghitung di mana serangkaian musim mana karakter Game of Thrones terlibat:
GOTCharacterBySeason[name_]:= Module[{initialData,empty}, initialData= Map[ #[[;;,2]]&, GroupBy[ Cases[ {#[[1]],Keys[#[[2]]]}&/@ Lookup[ $GOTEpisodeData, {"EpisodeN","ScreenTime"} ], {number_,episode_/;Not[FreeQ[episode,name]]}:> number ], First ] ]; empty=Complement[Range[1,8],Keys[initialData]]; If[ Length[empty]===0, initialData, (* else *) KeySort@<|initialData,<|#->{}&/@empty|>|> ] ]
GOTCharacterBySeasonPlot memvisualisasikan data yang diterima oleh
GOTCharacterBySeason .
GOTCharacterBySeasonPlot[name_]:= Flatten@ KeyValueMap[ ReplacePart[ $GOTSeasonsMask[[#1]], Thread[ Complement[Range[1,$GOTSeriesInSeason[#1]],#2]->0 ] ]&, GOTCharacterBySeason[name] ]
$ GOTSeasonColors set warna, untuk menampilkan serangkaian musim secara visual.
$GOTSeasonColors= {0->White} ~ Join ~ Thread[Range[1,8]->ColorData[54,"ColorList"][[1;;8]]];
Akhirnya, kita akan membangun sebuah tabel di mana terlihat jelas karakter mana yang merupakan seri "Game of Thrones" dan yang tidak)
GOTInfographicsPoster[ #, "100 \" \", ", "ImageSize"->2500 ]&@ Grid[ { { " \\ ", SpanFromLeft, Style["% \n \n",12] } ~ Join ~ Map[ Style[ "S"<>ToString[#[[1]]]<>"\nE"<>ToString[#[[2]]],10 ]&, Keys[$GOTEpisodeN] ] } ~ Join ~ ( ( { ImageResize[#/.$characterImage,{Automatic,25}], #, PercentForm[ N@Total[Length/@GOTCharacterBySeason[#]] / Last[$GOTEpisodeN] ] } ~ Join ~ ReplaceAll[ GOTCharacterBySeasonPlot[#], x_Integer:>Item["",Background->x/.$GOTSeasonColors] ]&/@ DeleteCases[ $GOTCharacters[[1;;100]],"" ] ) ), ItemSize->{{2,10,5,{1.2}},{4,{1}}}, Background->White, Dividers->Gray, ItemStyle -> Directive[ FontFamily->"Open Sans",14,Bold,LineSpacing->{0.8,0,0} ], Alignment->{Center,Center} ]

(
asli )
Lokasi paling populer "Game of Thrones"
Peta lokasi "Game of Thrones"
Kami membangun peta dari primitif geometris. Mari kita buat set mereka:
index=1; $GOTLakesIDs= { 11, 8, 9, 10, 2, 529, 530, 522, 523, 533, 532, 526, 521, 525, 531, 524, 528, 527, 7, 3, 4, 5, 6 };
$GOTMapPolygons= { FaceForm@If[MemberQ[$GOTLakesIDs,index],LightBlue,LightOrange], EdgeForm[AbsoluteThickness[1]], index++;Polygon[Accumulate[#]] }&/@ GOTRawData["lands-of-ice-and-fire.json"]["arcs"];
Buat satu set tempat di peta Game of Thrones:
$GOTMapPlaces= Lookup[ GOTRawData["lands-of-ice-and-fire.json"]["objects"]["places"][ "geometries" ], {"coordinates","properties"} ];
$GOTMapPlaceCoordinates=Map[#[[2,"name"]]->#[[1]]&,$GOTMapPlaces];
Fungsi
GOTMap digunakan untuk membangun semua jenis tempat dan lintasan "geografis" di peta "Game of Thrones":
GOTMap[additinals_,OptionsPattern[{"ImageSize"->1500}]]:= Legended[ Graphics[ { $GOTMapPolygons, ( { { AbsolutePointSize[10], Black, Point[#1[[1]]], AbsolutePointSize[5], White, Point[#1[[1]]] }, Inset[ With[{placeType=#1[[2]]["type"]}, ( Framed[ #1, Background -> ( placeType /. Thread[ { "city", "castle", "ruin", "town" } -> ( Lighter[ RGBColor[ #1/255 ], 0.5 ]& )/@ { {254,92,7}, {254,252,9}, {138,182,7}, {2,130,237} } ] ), RoundingRadius->6, FrameStyle->None, FrameMargins->2 ]& )[ Style[ #1[[2]]["name"], LineSpacing->{0.8,0,0}, FontFamily->"Open Sans", Bold, 12 ] ] ], #1[[1]], If[ MemberQ[ { "Eastwatch", "The Dreadfort", "White Harbor", "Storm's End", "Ghoyan Drohe", "Qohor" }, #1[[2]]["name"] ], Scaled[{-0.1,1/2}], (* else *) Scaled[{1.1,1/2}] ] ] }& )/@ $GOTMapPlaces, additinals }, ImageSize->OptionValue["ImageSize"], Background->LightBlue, PlotRangePadding->0 ], (Placed[#1,"Bottom"]&)[ SwatchLegend[ (RGBColor[#1/255]&)/@ {{254,92,7},{254,252,9},{138,182,7},{2,130,237}}, {"city","castle","ruin","town"}, LegendLayout->"Row" ] ] ]
Buat peta itu sendiri:
GOTInfographicsPoster[ #," \" \"","ImageSize"->1500 ]&@ GOTMap[{}]

Memindahkan karakter Game of Thrones dari seri ke seri
Fungsi
GOTCharacterLocationNamesSequence menghitung pergerakan karakter antara lokasi Game of Thrones:
GOTCharacterLocationNamesSequence[name_]:= Merge[$GOTEpisodeData[[;;,"CharacterLocations"]],Identity][name];
Fungsi
GOTCharacterLocationSequence menerjemahkan nama-nama tempat menjadi koordinat "geografis" mereka:
GOTCharacterLocationSequence[name_]:= DeleteCases[ Partition[ Flatten[ DeleteCases[ GOTCharacterLocationNamesSequence[name] /. {{x_String,y_String}:>y,{x_String}:>x} /. $GOTMapPlaceCoordinates, _String, Infinity ], 1 ], 2, 1 ], {x_,x_} ];
Fungsi
GOTMapTraectory membangun lintasan pada peta Game of Thrones:
ClearAll[GOTMapTraectory]; GOTMapTraectory[path_,colorFunction_:ColorData["Rainbow"]]:= Module[{kol}, kol=Length[path]; Table[ { Opacity[0.5], colorFunction[(i-1)/(kol-1)], AbsoluteThickness[10i/kol+1], CapForm["Round"], Arrow[ BSplineCurve[ { path[[i,1]], Mean[path[[i]]] + RandomInteger[{5000,20000}] Function[#/Norm[#]][ RandomChoice[{1,1}] {-1,1} * Reverse[path[[i,2]]-path[[i,1]]] ], path[[i,2]] } ] ] }, {i,1,kol} ] ];
Akhirnya, kita dapat membangun peta pergerakan karakter apa pun dari Game of Thrones. Bangun mereka untuk 10 pahlawan paling populer.
( Print[ With[{track=#1,name=#1[[1]]}, ( GOTInfographicsPoster[ #1, Row[ { " ", Style[name,Bold], " \" \"", "\n", Style[ "( )", 25 ] } ], "ImageSize"->1500 ]& )[ GOTMap[ { Arrowheads[{0,0.01}], ( With[{color=#1[[2]]}, GOTMapTraectory[ GOTCharacterLocationSequence[name] ] ]& )[ track ], Inset[ track[[1]]/.$characterCardFull, Scaled[{0.99,0.99}], Scaled[{1,1}] ] } ] ] ] ]& )/@ ({#1,RGBColor[{200,42,102}/255]}&)/@$GOTCharacters[[1;;10]];


(kartu lain lihat di
sini )
Siapa yang paling "bepergian" dari karakter "Game of Thrones"?
Kami akan menemukan panjang jalan yang dilalui oleh masing-masing karakter Game of Thrones dalam unit sewenang-wenang dan melihat siapa yang paling sering bepergian menurut Westeros:
GOTInfographicsPoster[ #1, " \"\" \" \"?", "ImageSize"->1500 ]&@ ( ( BarChart[ #1[[1;;All,1]], PlotRangePadding->0, BarSpacing->0.25, BarOrigin->Left, AspectRatio->1.8, ImageSize->1500, ChartLabels->#1[[1;;All,2]], Frame->True, GridLines->{Range[0,10^6,10^4],None}, ColorFunction->ColorData["Rainbow"], FrameLabel-> { {None,None}, Style[#,FontFamily->"Open Sans Light",16]&/@ { " ", " " } }, Background->GrayLevel[0.95] ]& )[ Cases[ SortBy[ ( { Total[ (Norm[Subtract@@#1]&)/@ GOTCharacterLocationSequence[#1] ], #1/.$characterCardShortSmall }& )/@ DeleteCases[ $GOTCharacters, Alternatives@@ { "", "Musician #1", "Musician #2", "Musician #3" } ], First[#1]& ], {x_/;x>0,_} ][ [-50;;-1] ] ] )

Lokasi paling populer "Game of Thrones" (di layar waktu)
Kami menghitung untuk setiap lokasi (dan wilayah) pada Game of Thrones memetakan total waktu layar dan menampilkan hasilnya dalam beberapa bentuk. Anda akan segera melihat lokasi paling populer.
Data dalam bentuk grafik batang:
GOTInfographicsPoster[ #1, " \" \" ( 1)", "ImageSize"->2000 ]&@ ( BarChart[ #[[;;,1]], PlotRangePadding->0, BarSpacing->{0.5,3}, BarOrigin->Left, AspectRatio->1.5, ImageSize->2000, ChartLabels->{#[[;;,2]],None}, ColorFunction-> Function[ {x},If[x>4000,Red,ColorData["Rainbow"][x/4000]] ], ColorFunctionScaling->False, PlotRange->{0,55000}, Frame->True, GridLines->{Range[0,60000,1000],None}, GridLinesStyle->LightGray, FrameTicks->{All,Automatic}, FrameLabel-> { {None,None}, Style[#,FontFamily->"Open Sans Light",16]&/@ { " , ", " , " } }, Background->GrayLevel[0.95] ]&@ KeyValueMap[ { Callout[ #[[1]], #[[2]], If[#[[1]]>20000,Bottom,Right], If[#[[1]]>4000,Scaled[1/2],Automatic] ]&/@ Transpose[{#2[[;;,2]],#2[[;;,1]]}], #1 }&, SortBy[ GroupBy[ KeyValueMap[ {#1,#2}&, Merge[ $GOTEpisodeData[[All,"LocationTime"]], Total[Flatten[#]]& ] ], #[[1,1]]&, SortBy[ Transpose[ { #[[;;,1]] /. { {x_String,y_String}:>y, {x_String}:>x }, #[[;;,2]] } ] /. {"",_}:>Nothing, Last[#]& ]& ], Total[#[[;;,2]]]& ] ] )

(
asli )
Data dalam bentuk diagram lingkaran:
{ Print[ GOTInfographicsPoster[ #1, " \" \" ( 2)", "ImageSize"->1500 ]&@ stripLineInfographics[ #, "Reverse"->False, "Gaps"->{75,50}, "ColorFunctionRight"->ColorData["Rainbow"] ] ], Print[ GOTInfographicsPoster[ #1, " \" \" \n( )", "ImageSize"->1500 ]&@ stripLineInfographics[ #, "Reverse"->True, "Gaps"->{50,75}, "ColorFunctionRight"->ColorData["Rainbow"] ] ] }&@ SortBy[ GroupBy[ KeyValueMap[ {#1,#2}&, Merge[ $GOTEpisodeData[[All,"LocationTime"]], Total[Flatten[#]]& ] ], #[[1,1]]&, SortBy[ Transpose[ { #[[;;,1]] /. {{x_String,y_String}:>y,{x_String}:>x}, #[[;;,2]] } ] /. {"",_}:>Nothing, Last[#]& ]& ], -Total[#[[;;,2]]]& ];

(
asli )

(
asli )
Film apa yang dimainkan oleh para aktor Game of Thrones dan seberapa familiar mereka?
Tentu saja, para aktor dari Game of Thrones masih banyak bermain. Kami menghitung dan memasukkan data variabel
$ GOTCharactersInAnotherFilms di film mana dari aktor yang diputar.
$GOTCharactersInAnotherFilms= SortBy[ Map[ { #[[1]], #[[2]][[;;,"characterName"]], If[ Head[#[[3]]]===Missing, 0, (* else *) StringCases[#[[3]],DigitCharacter..] /. x_/;Length[x]>0:>ToExpression[x] ] /. {{x_}:>x,{}->0} }&, Lookup[ Values[GOTRawData["costars.json"]], {"title","actors","year"} ] ], -Length[#[[2]]]& ];
Sekarang kita akan menghitung untuk setiap aktor di mana film-film yang ia mainkan dan memasukkan hasilnya dalam variabel
$ GOTCharactersFilmography .
$GOTCharactersFilmography= Association@ SortBy[ Select[ #-> SortBy[ Cases[ $GOTCharactersInAnotherFilms, {film_,list_/;MemberQ[list,#],year_}:> {film,year} ], -Last[#]& ]&/@ $GOTCharacters, Length[#[[2]]]>0& ], -Length[#[[2]]]& ];
Mari kita cari tahu di film-film yang tahun-tahun rilisnya para aktor "Game of Thrones" diputar:
GOTInfographicsPoster[ #1, " , \" \"", "ImageSize"->800 ]&@ DateHistogram[ DeleteMissing@ Lookup[Values[GOTRawData["costars.json"]],"year"], ColorFunction->"Rainbow", ImageSize->800, Background->GrayLevel[0.95] ]

Film di mana aktor paling populer dari Game of Thrones bermain:
GOTInfographicsPoster[ #1, " 20 \"\" \" \"", "ImageSize"->1500 ]&@ Grid[ { #/.$characterCardFull, TextCell[ Grid[ KeyValueMap[ {#1/.{0->"."},Row[#2," - "]}&, GroupBy[#,Last,#[[;;,1]]&] ], Alignment->{{Center,Left},{Top,Top}} ], FontFamily->"Open Sans Light", FontSize->14, TextAlignment->Left, LineSpacing->{0.9,0,0} ]&@ $GOTCharactersFilmography[#] }&/@ $GOTCharacters[[1;;20]], Alignment->{{Center,Left},Center}, ItemSize->{{20,70},Automatic}, Background->GrayLevel[0.95], Dividers->{None,{None,{Gray},None}} ]

(
asli )
Aktor Game of Thrones di Harry Potter
GOTInfographicsPoster[ #," \" \" \" \"","ImageSize"->1500 ]&@ Grid[ { Style[#[[1]],FontFamily->"Open Sans Light",16,Bold], Row[Magnify[#,0.75]&/@(#[[2]]/.$characterCardFull)," "] }&/@ SortBy[ Select[ $GOTCharactersInAnotherFilms, StringMatchQ[ ToLowerCase@#[[1]],___~~"harry potter"~~___ ]& ], -Last[#]& ][ [{1,-1,2,3,4,5,6,7}] ], Background->GrayLevel[0.95], ItemSize->{{25,70},Automatic}, Dividers->{None,{None,{LightGray},None}}, Alignment->{{Center,Left},Center} ]

Aktor Game of Thrones di Star Wars
GOTInfographicsPoster[ #, " \" \" \" \"", "ImageSize"->1100 ]&@ Grid[ { Style[#[[1]],FontFamily->"Open Sans Light",16,Bold], Row[Magnify[#,0.75]&/@(#[[2]]/.$characterCardFull)," "] }&/@ SortBy[ Select[ $GOTCharactersInAnotherFilms, StringMatchQ[ ToLowerCase@#[[1]],___~~"star wars"~~___ ]& ], -Last[#]& ], Background->GrayLevel[0.95], ItemSize->{{25,45},Automatic}, Dividers->{None,{None,{LightGray},None}}, Alignment->{{Center,Left},Center} ]

Aktor Game of Thrones di Pirates of the Caribbean
GOTInfographicsPoster[ #, " \" \" \" \"", "ImageSize"->1300 ]&@ Grid[ { Style[#[[1]],FontFamily->"Open Sans Light",16,Bold], Row[Magnify[#,0.75]&/@(#[[2]]/.$characterCardFull)," "] }&/@ SortBy[ Select[ $GOTCharactersInAnotherFilms, StringMatchQ[ ToLowerCase@#[[1]],___~~"pirates of the"~~___ ]& ], -Last[#]& ], Background->GrayLevel[0.95], ItemSize->{{25,50},Automatic}, Dividers->{None,{None,{LightGray},None}}, Alignment->{{Center,Left},Center} ]

Di mana film / seri ada banyak aktor dari Game of Thrones
GOTInfographicsPoster[ #, " () \" \"", "ImageSize"->2000 ]&@ Grid[ { Style[#[[1]],FontFamily->"Open Sans Light",16,Bold], Row[Magnify[#,0.75]&/@(#[[2]]/.$characterCardFull)," "] }&/@ SortBy[ Select[$GOTCharactersInAnotherFilms,Length[#[[2]]]>5&], -Length[#[[2]]]& ], Background->GrayLevel[0.95], ItemSize->{{20,100},Automatic}, Dividers->{None,{None,{LightGray},None}}, Alignment->{{Center,Left},Center} ]

(
asli )
Seberapa dekat hubungan para aktor Game of Thrones
Kami akan membuat grafik yang menunjukkan berapa banyak gambar (film, seri, dll.) Yang dimainkan oleh para aktor Game of Thrones. Semakin tebal dan semakin merah garisnya, semakin banyak gambar umum dari aktor ini. (
Asli )
GOTInfographicsPoster[ #, " \" \"", "ImageSize"->2500 ]&@ ( ConnectedGraphComponents[ GOTGraphPlot[#,1,"ImageSize"->2500,"MaxThickness"->20] ][ [1] ]&@ Tally[ UndirectedEdge@@@ Map[ Sort, Flatten[ Map[ Subsets[#,{2}]&, Select[ Values[GOTRawData["costars.json"]][ [ ;;, "actors", All, "characterName" ] ], Length[#]>1& ] ], 1 ] ] ] )

Percakapan dalam Game of Thrones
Banyak yang menyukai Game of Thrones untuk berdialog. Mari kita lihat di seri mana dari mereka yang paling:
GOTInfographicsPoster[ #, " , \" \"", "ImageSize"->1000 ]&@ BarChart[ #, BarSpacing->{0.05,1}, AspectRatio->1/2, ImageSize->1000, ChartLabels->{Keys[#],Range[10]}, ColorFunction->Function[{x},ColorData["Rainbow"][x]], GridLines->{None,Range[0,10000,500]}, FrameLabel-> Map[ Style[#,FontFamily->"Open Sans",20,Bold]&, {" "," "} ], Frame->True, Background->GrayLevel[0.95], PlotRangePadding->0, PlotRange->All ]&@ GroupBy[ Map[ {#[[1;;2]],Total[#[[3]][[;;,"count"]]]}&, Lookup[ GOTRawData["wordcount.json"]["count"], {"seasonNum","episodeNum","text"} ] ], #[[1,1]]&, #[[;;,2]]& ]

Kami akan mencari tahu siapa yang paling "ngobrol" di "Game of Thrones" - jawabannya cukup dapat diprediksi, tetapi pemisahan Tyrion hampir 2 kali dari karakter yang paling dekat dengannya.
GOTInfographicsPoster[ #1, " \" \"?", "ImageSize"->1500 ]&@ ( ( BarChart[ #1[[1;;All,1]], PlotRangePadding->0, BarSpacing->0.25, BarOrigin->Left, AspectRatio->1.9, ImageSize->1500, ChartLabels->#1[[1;;All,2]], Frame->True, GridLines->{Range[0,10^5,10^3],None}, ColorFunction->ColorData["Rainbow"], FrameLabel-> { {None,None}, Style[#,FontFamily->"Open Sans Light",16]&/@ { " ", " " } }, FrameTicks->{Automatic,{All,All}}, Background->GrayLevel[0.95] ]& )[ KeyValueMap[ {#2,#1/.$characterCardShortSmall}&, Select[ SortBy[ GroupBy[ Flatten[ GOTRawData["wordcount.json"]["count"][ [;;,"text"] ] ], #[["name"]]&, Total[#[[;;,"count"]]]& ], #& ], #>1000& ] ] ] )

Terakhir, buat diagram yang menunjukkan jumlah waktu layar dan jumlah kata yang diucapkan oleh karakter bersama-sama:
GOTInfographicsPoster[ #1, " \" \"\n( )", "ImageSize"->2000 ]&@ Module[{data1,data2,intersection}, data1= Merge[ $GOTEpisodeData[[;;,"ScreenTime"]],Total[Flatten[#]]& ]; data2= GroupBy[ Flatten[ GOTRawData["wordcount.json"]["count"][[;;,"text"]] ], #[["name"]]&, Total[#[[;;,"count"]]]& ]; intersection=Intersection[Keys@data1,Keys@data2]; ListPlot[ Callout[{data1[#],data2[#]},#/.$characterCardShortSmall]&/@ intersection, AspectRatio->1, ImageSize->2000, PlotRange->All, ScalingFunctions->{"Log10","Log10"}, GridLines-> { {10,100}~Join~Range[0,10^5,1000], {10,100}~Join~Range[0,10^5,1000] }, Frame->True, FrameTicks->All, FrameLabel-> ReplaceAll[ { {1,1}" ", {1,1}" , " }, x_String:>Style[x,FontFamily->"Open Sans",20,Bold] ], Background->GrayLevel[0.95], PlotMarkers->{Automatic,Small}, GridLinesStyle->GrayLevel[0.85] ] ]

(
asli )
Karakter Gender of Game of Thrones: siapa yang lebih, pria atau wanita?
Jenis kelamin menurut nama karakter:
$gender= <| Flatten[ KeyValueMap[ Thread[#2->#1]&,GOTRawData["characters-gender-all.json"] ] ] ~ Join ~ { "Aegon Targaryen"->"male", "Aerys II Targaryen"->"male", "Archmaester Marwyn"->"male", "Baratheon Guard"->"male", "Brandon Stark"->"male", "Child of the Forest"->"male", "Elia Martell"->"female", "Eon Hunter"->"male", "Goldcloak #1"->"male", "Goldcloak #2"->"male", "Knight of House Frey"->"male", "Knight of House Lynderly"->"male", "Kurleket"->"male", "Lannister Guardsman"->"male", "Lord Galbart Glover"->"male", "Male Prostitute"->"male", "Masha Heddle"->"female", "Meereen Slave Master"->"male", "Mikken"->"male", "Night's Watch Deserter"->"male", "Night's Watch Messenger"->"male", "Night's Watch Officer"->"male", "Pentoshi Servant"->"male", "Rhaella Targaryen"->"female", "Rhaenys Targaryen"->"female", "Stark Bannerman"->"male", "Stark Guard"->"male", "Wedding Band"->"male", "White Walker #2"->"male", "Willis Wode"->"male", "Young Ned"->"male" }|>
Rasio karakter "Game of Thrones" berdasarkan jenis kelamin - jelas bahwa ada 3 pria per wanita. Kadang-kadang tampaknya bahwa karakter laki-laki hanya rombongan untuk perempuan yang kuat).
GOTInfographicsPoster[ #," " ]&@ Module[{labels,counts,percents}, {labels,counts}=Transpose[Tally[Values[$gender]]]; percents=PercentForm/@N[counts/Total[counts]]; PieChart[ counts, ChartLabels-> Map[ Style[ Row[#,"\n"], 20, Bold, Black, FontFamily->"Open Sans" ]&, Transpose[{labels,counts,percents}] ], ChartStyle->{LightRed,LightBlue}, ImageSize->600, Background->GrayLevel[0.95] ] ]
, .— .
YouTube — .
. .