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
Journal: Getting Started with Data Viz
25 Apr 2020: First Bar Chart
26 Apr 2020: Bar Chart Revisited
27 Apr 2020: Finalising the Bar Chart
28 Apr 2020: What Else I Learned From That Bar Chart
29 Apr 2020: Setting up Observable
30 Apr 2020: What Else Can I Do With This Bar Chart?
1 May 2020: Formatting Numbers and Sorting a Bar Chart
2 May 2020: Exploring More of Observable and Vega-Lite
3 May 2020: Exploring More Vega-Lite
4 May 2020: Vega-Lite Scatterplot and Heat Map, and More Posts on Getting Started With Data Viz
5 May 2020: Vega-Lite Scatterplot continued
6 May 2020: D3 Scatterplot
7 May 2020: D3 Scatterplot with Legends
8 May 2020: D3 Scatterplot with Tooltips
9 May 2020: D3 Scatterplot with Voronoi Tooltips
10 May 2020: Line charts
11 May 2020: Vega-Lite Line Charts
12 May 2020: D3 Line Chart
13 May 2020: D3 Multi-Line Chart
14 May 2020: D3 Multi-Line Chart with Annotations
15 May 2020: D3 Multi-Line Chart with Shading
16 May 2020: Donut Charts and Pie Charts
17 May 2020: Pie Charts in Vega-Lite
18 May 2020: Donut Chart in Vega-Lite
19 May 2020: Donut Chart in D3
20 May 2020: Donut Chart in D3 with Footnotes
21 May 2020: Donut Chart in D3 with Tooltips
22 May 2020: Area Charts, Stacked Area Charts, Stream graphs and Ridgelines
23 May 2020: Area Charts in Vega-Lite and CSV Parsing
24 May 2020: Area Charts in D3 with Tooltips
25 May 2020: Cumulative Area Chart in D3 with Tooltips
26 May 2020: Histograms and Density Plots
27 May 2020: Exploratory Histogram
28 May 2020: D3 Histogram
29 May 2020: D3 Histogram Styling
30 May 2020: Data Tables
31 May 2020: Wikipedia Data Tables
1 June 2020: Wrangling Wikipedia List Data and Summary Statistics
2 June 2020: Treemaps, Dendrograms, Sunbursts, Circle Packing, and Tree Diagrams
3 June 2020: D3 Tree Diagram and D3 Hierarchy
4 June 2020: D3 Clustered Dendrogram
5 June 2020: D3 Radial Tidy Tree and Radial Dendrogram
6 June 2020: D3 Collapsible Tidy Tree
7 June 2020: D3 Collapsible Tidy Tree (Improved)
8 June 2020: Designing for Touch Devices: Drag, Click, Hover, Focus, Scroll, Zoom, Delaunay, Voronoi
9 June 2020: Designing for Small Screens: Responsive Data Viz, Resizing, and Aspect Ratios
10 June 2020: Typography for Data Viz
11 June 2020: Color in Data Viz
12 June 2020: Styled Bar Chart
13 June 2020: Accessible Bar Chart and Accessible Data Table
14 June 2020: Line Chart with Points and Bar Chart
15 June 2020: Network Diagrams
16 June 2020: D3 Disjoint Force-Directed Graph
17 June 2020: D3 Bar Chart with Textured Line
18 June 2020: D3 Bar Chart Transitions
19 June 2020: D3 Bar Chart Transitions (Improved)
20 June 2020: Sketchy D3 Bar Chart Style
21 June 2020: Brushing to Filter and Zoom Using D3 Brush
22 June 2020: D3 Bar Chart Brush (Work In Progress)
23 June 2020: Linear Regression
24 June 2020: Hatched Pattern Effect Bar Chart
25 June 2020: Checkerboard Fill Effect Bar Chart
26 June 2020: D3 Bar Chart Brush
27 June 2020: Using Textures
28 June 2020: Charting Typing Speed: Data and Exploration
29 June 2020: Charting Typing Speed: Data and Exploration with Vega-Lite
30 June 2020: Charting Typing Speed: Data and Exploration with Vega-Lite and Datawrapper
1 July 2020: Charting Typing Speed: Data and Exploration with Vega-Lite Bubble Chart
2 July 2020: Charting Typing Scores: Data and Exploration with Vega-Lite
3 July 2020: Journal Updates and User Testing
4 July 2020: About Heatmaps
5 July 2020: Data Wrangling for a Heatmap
6 July 2020: D3 Heatmap Without Sorting
7 July 2020: D3 Heatmap With Sorting
8 July 2020: D3 Heatmap with Legend
9 July 2020: D3 Heatmap Styled
10 July 2020: About Bubble Charts
11 July 2020: D3 Bubble Chart
12 July 2020: D3 Bubble Chart with Labels on Hover
13 July 2020: D3 Bubble Chart with Voronoi Labels on Hover
14 July 2020: D3 Bubble Chart with Voronoi Tooltips
15 July 2020: About Population Pyramids
16 July 2020: Data Wrangling for Population Pyramids
17 July 2020: D3 Population Pyramid
18 July 2020: About Sankey, Alluvial, Parallel Sets, and Parallel Coordinates
19 July 2020: Data Wrangling for a Sankey Diagram
20 July 2020: D3 Sankey Diagram
21 July 2020: D3 Sankey Diagram with Hovers and Percentages
22 July 2020: D3 Parallel Coordinates
23 July 2020: D3 Parallel Coordinates (Updates)
24 July 2020: About Slope Charts
25 July 2020: Data Wrangling for a Slope Chart
26 July 2020: D3 Slope Chart
27 July 2020: D3 Slope Chart with Color
28 July 2020: D3 Slope Chart with Highlight Color and Gray Context Lines
29 July 2020: D3 Slope Chart Small Multiples (Work in Progress)
30 July 2020: D3 Slope Chart Small Multiples
31 July 2020: About Dumbbell or Connected Dot Plots
1 August 2020: D3 Dumbbell Plot
2 August 2020: 100 Days of Data Viz
About Timelines
Building Timelines
About Sparklines
About Circle Packing
D3 Circle Packing
D3 Circle Packing with Data Wrangling and Interactive Grouping
Sort by arbitrary array
About Choropleth Maps
About Map Data: GeoJSON and TopoJSON with D3
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