Platform
Resources
Pricing
Sign in
Contact us
Matteo Abrate
Web Datavis researcher by day, Indie Game designer by night
Workspace
Fork
Public
By
Matteo Abrate
and
kleem
Edited
Sep 20, 2024
1 star
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
random
=
d3
.
randomLogNormal
(
0
,
1
)
Insert cell
matrix
=
d3
.
range
(
30
)
.
map
(
i
=>
d3
.
range
(
40
)
.
map
(
j
=>
j
%
2
?
random
(
)
:
i
%
2
?
random
(
)
/
5.0
:
random
(
)
/
20.0
)
)
Insert cell
row_ordering
=
!
row_clustering
.
enabled
?
d3
.
range
(
matrix
.
length
)
:
(
new
hclust
.
agnes
(
matrix
,
{
distanceFunction
:
distance
[
row_clustering
.
distance_metric
]
,
method
:
row_clustering
.
method
}
)
)
.
indices
(
)
Insert cell
row_sorted_matrix
=
row_ordering
.
map
(
i
=>
matrix
[
i
]
)
Insert cell
row_sorted_columns
=
d3
.
range
(
row_sorted_matrix
[
0
]
.
length
)
.
map
(
j
=>
row_sorted_matrix
.
map
(
row
=>
row
[
j
]
)
)
Insert cell
col_ordering
=
!
col_clustering
.
enabled
?
d3
.
range
(
matrix
[
0
]
.
length
)
:
(
new
hclust
.
agnes
(
row_sorted_columns
,
{
distanceFunction
:
distance
[
col_clustering
.
distance_metric
]
,
method
:
col_clustering
.
method
}
)
)
.
indices
(
)
Insert cell
sorted_matrix
=
row_sorted_matrix
.
map
(
row
=>
col_ordering
.
map
(
j
=>
row
[
j
]
)
)
Insert cell
flat_matrix
=
sorted_matrix
.
map
(
(
row
,
i
)
=>
row
.
map
(
(
value
,
j
)
=>
(
{
row
:
i
,
col
:
j
,
value
:
value
}
)
)
)
.
flat
(
)
Insert cell
// By Fabian Inwand - https://observablehq.com/d/fe65c694a06cc12b
// A `template` callback for Inputs.form() that displays all inputs inline.
function
filterBar
(
inputs
)
{
const
scope
=
DOM
.
uid
(
)
.
id
;
return
htl
.
html
`<div class=${
scope
}>${
Object
.
values
(
inputs
)
}
<style>
.${
scope
} { display: flex; gap: 2ch }
.${
scope
} form, .${
scope
} form > * { width: fit-content !important }
`
;
}
Insert cell
Insert cell
hclust
=
(
await
import
(
"https://cdn.skypack.dev/ml-hclust@3.1.0?min"
)
)
Insert cell
distance
=
(
await
import
(
"https://cdn.skypack.dev/ml-distance@3.0.0?min"
)
)
.
distance
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
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
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
row_clustering
Edit
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
col_clustering
Edit
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
random
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
matrix
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
row_ordering
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
row_sorted_matrix
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
row_sorted_columns
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
col_ordering
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
sorted_matrix
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
flat_matrix
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
filterBar
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
hclust
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
distance
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML