Platform
Resources
Pricing
Sign in
Get started
Di
Data Viz Engineer. Author of Practical UI Patterns for Design Systems. Creator of Typey Type for Stenographers.
Workspace
Fork
Published
Journal: Getting Started with Data Viz
By
Di
Edited
Jun 28, 2020
Fork of
26 June 2020: D3 Bar Chart Brush
•
1 fork
1 star
1
Insert cell
Insert cell
Insert cell
textures
=
require
(
"textures"
)
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
minimapPositionTranslate
=
""
+
miniMargin
.
left
+
","
+
parseFloat
(
mainMargin
.
top
+
mainHeight
+
mainMargin
.
bottom
+
miniMargin
.
top
)
;
Insert cell
// clip = clipPath => clipPath.append("rect")
// .attr("x", mainMargin.left)
// .attr("y", 0)
// .attr("width", mainWidth + mainMargin.left)
// .attr("height", mainHeight);
Insert cell
mainXScale
=
d3
.
scaleBand
(
)
.
domain
(
data
.
map
(
d
=>
d
.
x
)
)
.
range
(
[
mainMargin
.
left
,
width
-
mainMargin
.
right
]
)
.
paddingInner
(
0.4
)
;
Insert cell
miniXScale
=
d3
.
scaleBand
(
)
.
domain
(
data
.
map
(
d
=>
d
.
x
)
)
.
range
(
[
0
,
miniWidth
]
)
.
paddingInner
(
0.4
)
;
Insert cell
mainYScale
=
d3
.
scaleLinear
(
)
.
domain
(
[
0
,
d3
.
max
(
data
,
d
=>
d
.
y
)
]
)
.
nice
(
)
.
range
(
[
mainMargin
.
top
,
mainHeight
-
mainMargin
.
bottom
]
)
;
Insert cell
miniYScale
=
d3
.
scaleLinear
(
)
.
domain
(
[
0
,
d3
.
max
(
data
,
d
=>
d
.
y
)
]
)
.
nice
(
)
.
range
(
[
0
,
miniHeight
]
)
;
Insert cell
mainXZoom
=
d3
.
scaleLinear
(
)
.
range
(
[
0
,
mainWidth
]
)
.
domain
(
[
0
,
mainWidth
]
)
;
Insert cell
mainXAxis
=
g
=>
g
.
attr
(
"transform"
,
`translate(0,${
mainHeight
})`
)
.
call
(
d3
.
axisBottom
(
mainXScale
)
.
tickSizeOuter
(
0
)
.
tickFormat
(
d
=>
d3
.
timeFormat
(
"%a"
)
(
d
)
.
substring
(
0
,
1
)
)
)
;
Insert cell
initialBrushXSelection
=
[
0
,
200
]
Insert cell
chartTitle
=
g
=>
g
.
append
(
"text"
)
.
attr
(
"id"
,
"chart-title"
)
.
attr
(
"x"
,
0
)
.
attr
(
"y"
,
0
)
.
attr
(
"dy"
,
"1em"
)
.
style
(
"font-weight"
,
"800"
)
.
style
(
"font-size"
,
"clamp(.7rem, 2.5vw, 1.2rem)"
)
// minimum, preferred, maximum
.
text
(
data
.
barChartTitle
)
;
Insert cell
chartBy
=
g
=>
g
.
attr
(
"transform"
,
`translate(${
width
}, ${
height
})`
)
.
append
(
"text"
)
.
attr
(
"id"
,
"source"
)
.
attr
(
"x"
,
0
)
.
attr
(
"y"
,
0
)
.
attr
(
"dy"
,
"-0.5em"
)
.
attr
(
"text-anchor"
,
"end"
)
.
text
(
'@DiDoesDigital'
)
;
Insert cell
Insert cell
mainMargin
=
(
{
top
:
48
,
right
:
0
,
bottom
:
24
,
left
:
0
}
)
Insert cell
mainWidth
=
width
-
mainMargin
.
left
-
mainMargin
.
right
;
Insert cell
mainHeight
=
450
;
Insert cell
miniMargin
=
(
{
top
:
12
,
right
:
0
,
bottom
:
48
,
left
:
0
}
)
Insert cell
miniHeight
=
100
;
Insert cell
miniWidth
=
width
-
miniMargin
.
left
-
miniMargin
.
right
;
Insert cell
barColor
=
"#EF767A"
Insert cell
inactiveColor
=
"#f2e9e9"
Insert cell
activeColor
=
"#EF767A"
Insert cell
Insert cell
Insert cell
Insert cell
accessibleDataTable
=
renderDataTable
(
data
,
{
caption
:
data
.
tableCaption
,
columns
:
data
.
slice
[
0
]
,
focusable
:
false
}
)
Insert cell
Insert cell
Insert cell
d3
=
require
(
"d3@5"
,
"d3-array@2.4"
)
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
textures
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
chart
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
update
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
brush
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
brushmove
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
scroll
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
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
minimapPositionTranslate
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
mainXScale
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
miniXScale
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
mainYScale
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
miniYScale
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
mainXZoom
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
mainXAxis
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
initialBrushXSelection
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
chartTitle
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
chartBy
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
height
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
mainMargin
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
mainWidth
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
mainHeight
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
miniMargin
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
miniHeight
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
miniWidth
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
barColor
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
inactiveColor
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
activeColor
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
barChartStyles
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
dataTableStyles
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
typographyStyles
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
accessibleDataTable
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
renderDataTable
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
data
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
d3
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML