Platform
Resources
Pricing
Sign in
Get started
JR Ladd
Workspace
Fork
Published
By
JR Ladd
Edited
Aug 19, 2022
Fork of
Game of Thrones Graphology Example
2 stars
1
Insert cell
Insert cell
Insert cell
rendererPre
=
new
Sigma
.
Sigma
(
graphPre
,
document
.
getElementById
(
'sigma-container-pre'
)
)
;
Insert cell
Insert cell
Insert cell
rendererPost
=
new
Sigma
.
Sigma
(
graphPost
,
document
.
getElementById
(
'sigma-container-post'
)
)
;
Insert cell
Insert cell
Insert cell
function
difference
(
setA
,
setB
)
{
let
_difference
=
new
Set
(
setA
)
for
(
let
elem
of
setB
)
{
_difference
.
delete
(
elem
)
}
return
_difference
}
Insert cell
function
intersection
(
setA
,
setB
)
{
let
_intersection
=
new
Set
(
)
for
(
let
elem
of
setB
)
{
if
(
setA
.
has
(
elem
)
)
{
_intersection
.
add
(
elem
)
}
}
return
_intersection
}
Insert cell
Insert cell
nodesPreSet
=
new
Set
(
nodesPre
)
Insert cell
nodesPostSet
=
new
Set
(
nodesPost
)
Insert cell
Insert cell
PreNotPost
=
difference
(
nodesPreSet
,
nodesPostSet
)
Insert cell
Insert cell
PostNotPre
=
difference
(
nodesPostSet
,
nodesPreSet
)
Insert cell
Insert cell
InBoth
=
intersection
(
nodesPreSet
,
nodesPostSet
)
Insert cell
Insert cell
edgesPreSet
=
new
Set
(
edgesPre
)
Insert cell
edgesPostSet
=
new
Set
(
edgesPost
)
Insert cell
Insert cell
EdgesPreNotPost
=
difference
(
edgesPreSet
,
edgesPostSet
)
Insert cell
Insert cell
EdgesInBoth
=
intersection
(
edgesPreSet
,
edgesPostSet
)
Insert cell
Insert cell
graphPreDensity
=
metrics
.
density
.
undirectedDensity
(
graphPre
)
Insert cell
graphPostDensity
=
metrics
.
density
.
undirectedDensity
(
graphPost
)
Insert cell
avgdegree
=
(
graph
)
=>
{
let
totalDegree
=
0
graph
.
forEachNode
(
(
n
,
attr
)
=>
{
totalDegree
+=
graph
.
degree
(
n
)
;
}
)
return
totalDegree
/
graph
.
nodes
(
)
.
length
;
}
Insert cell
graphPreAvgDegree
=
avgdegree
(
graphPre
)
Insert cell
graphPostAvgDegree
=
avgdegree
(
graphPost
)
Insert cell
Insert cell
GPreStats
=
{
let
n
=
0
let
stats
=
[
]
while
(
n
<
100
)
{
n
++
let
RG
=
gen
.
random
.
erdosRenyi
(
Graph
,
{
order
:
544
,
approximateSize
:
1405
}
)
stats
.
push
(
{
density
:
metrics
.
density
.
undirectedDensity
(
RG
)
,
avgdegree
:
avgdegree
(
RG
)
}
)
}
return
stats
}
Insert cell
viewof
randomPreStats
=
aq
.
from
(
GPreStats
)
.
view
(
)
Insert cell
GPostStats
=
{
let
n
=
0
let
stats
=
[
]
while
(
n
<
100
)
{
n
++
let
RG
=
gen
.
random
.
erdosRenyi
(
Graph
,
{
order
:
430
,
approximateSize
:
910
}
)
stats
.
push
(
{
density
:
metrics
.
density
.
undirectedDensity
(
RG
)
,
avgdegree
:
avgdegree
(
RG
)
}
)
}
return
stats
}
Insert cell
viewof
randomPostStats
=
aq
.
from
(
GPostStats
)
.
view
(
)
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
randomPreStats
.
filter
(
d
=>
d
.
avgdegree
>
5.1
)
.
numRows
(
)
/
randomPreStats
.
numRows
(
)
Insert cell
randomPostStats
.
filter
(
d
=>
d
.
avgdegree
>
4.2
)
.
numRows
(
)
/
randomPostStats
.
numRows
(
)
Insert cell
Insert cell
Insert cell
Graph
=
require
(
'graphology'
)
Insert cell
Sigma
=
require
(
'https://bundle.run/sigma@2.0.0'
)
Insert cell
forceAtlas2
=
require
(
"https://bundle.run/graphology-layout-forceatlas2@0.8.1"
)
Insert cell
graphologyLayout
=
require
(
"https://bundle.run/graphology-layout@0.4.0"
)
Insert cell
noverlap
=
require
(
"https://bundle.run/graphology-layout-noverlap@0.4.1"
)
Insert cell
metrics
=
require
(
'https://bundle.run/graphology-metrics@1.18.2'
)
Insert cell
gen
=
require
(
'https://bundle.run/graphology-generators@0.11.1'
)
Insert cell
Insert cell
assignLayouts
=
(
graph
)
=>
{
graphologyLayout
.
random
.
assign
(
graph
)
;
// Needs a starting layout for forceAtlas to work
let
sensibleSettings
=
forceAtlas2
.
inferSettings
(
graph
)
;
forceAtlas2
.
assign
(
graph
,
{
iterations
:
100
,
settings
:
sensibleSettings
}
)
;
noverlap
.
assign
(
graph
)
}
Insert cell
assignLayouts
(
graphPre
)
Insert cell
assignLayouts
(
graphPost
)
Insert cell
Insert cell
graphPre
=
{
let
graph
=
new
Graph
(
{
type
:
'undirected'
}
)
nodesPre
.
forEach
(
n
=>
{
graph
.
addNode
(
n
)
;
}
)
;
edgesPre
.
forEach
(
e
=>
{
try
{
graph
.
addEdge
(
e
[
"Source Name"
]
,
e
[
"Target Name"
]
)
;
}
catch
(
e
)
{
}
}
)
;
return
graph
}
Insert cell
graphPost
=
{
let
graph
=
new
Graph
(
{
type
:
'undirected'
}
)
nodesPost
.
forEach
(
n
=>
{
graph
.
addNode
(
n
)
;
}
)
;
edgesPost
.
forEach
(
e
=>
{
try
{
graph
.
addEdge
(
e
[
"Source Name"
]
,
e
[
"Target Name"
]
)
;
}
catch
(
e
)
{
}
}
)
;
return
graph
}
Insert cell
edges
=
FileAttachment
(
"sdfb_edgelist.csv"
)
.
csv
(
)
Insert cell
edgesPre
=
edges
.
filter
(
e
=>
e
[
"Start Year"
]
<
1570
)
;
Insert cell
edgesPost
=
edges
.
filter
(
e
=>
e
[
"Start Year"
]
>=
1570
)
;
Insert cell
nodesPre
=
[
...
new
Set
(
edgesPre
.
map
(
e
=>
{
return
[
e
[
"Source Name"
]
,
e
[
"Target Name"
]
]
;
}
)
.
flat
(
)
)
]
Insert cell
nodesPost
=
[
...
new
Set
(
edgesPost
.
map
(
e
=>
{
return
[
e
[
"Source Name"
]
,
e
[
"Target Name"
]
]
;
}
)
.
flat
(
)
)
]
Insert cell
Insert cell
metrics
.
centrality
.
degree
.
assign
(
graphPre
)
Insert cell
Insert cell
assignAttributes
=
(
graph
)
=>
{
graph
.
forEachNode
(
(
n
,
attr
)
=>
{
// graph.setNodeAttribute(n, "size", attr.degreeCentrality);
graph
.
setNodeAttribute
(
n
,
"label"
,
n
)
;
graph
.
setNodeAttribute
(
n
,
"color"
,
colors
[
attr
.
community
]
)
;
}
)
;
}
Insert cell
graphPre
.
nodes
(
)
.
map
(
n
=>
graphPre
.
getNodeAttributes
(
n
)
)
Insert cell
assignAttributes
(
graphPre
)
Insert cell
assignAttributes
(
graphPost
)
Insert cell
Insert cell
louvain
=
require
(
'https://bundle.run/graphology-communities-louvain@1.5.3'
)
Insert cell
louvain
.
assign
(
graphPre
)
;
Insert cell
louvain
.
assign
(
graphPost
)
Insert cell
colors
=
[
'#e41a1c'
,
'#377eb8'
,
'#4daf4a'
,
'#984ea3'
,
'#ff7f00'
,
'#ffff33'
,
'#a65628'
,
'#f781bf'
]
Insert cell
Insert cell
import
{
aq
,
op
}
from
'@uwdata/arquero'
Insert cell
Purpose-built for displays of data
Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Try it for free
Learn more
Compare fork
Fork
View
Export
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
rendererPre
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
rendererPost
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
difference
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
intersection
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
nodesPreSet
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
nodesPostSet
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
PreNotPost
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
PostNotPre
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
InBoth
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
edgesPreSet
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
edgesPostSet
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
EdgesPreNotPost
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
EdgesInBoth
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
graphPreDensity
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
graphPostDensity
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
avgdegree
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
graphPreAvgDegree
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
graphPostAvgDegree
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
GPreStats
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
randomPreStats
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
GPostStats
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
randomPostStats
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Graph
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Sigma
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
forceAtlas2
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
graphologyLayout
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
noverlap
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
metrics
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
gen
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
assignLayouts
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
graphPre
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
graphPost
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
edges
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
edgesPre
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
edgesPost
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
nodesPre
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
nodesPost
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
assignAttributes
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
louvain
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
colors
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML