D3
Transition
d3.select('body')
.transition()
.style('background-color', 'red')
Transition
Start
End
White
Red
Initial DOM state
Specified attribute
Transition
d3.select('body')
.style('background-color', 'green')
.transition()
.style('background-color', 'red')
Transition
Start
End
Green
Red
Set Initial State
Specified attribute
Transition
Start
End
Green
Red
Set Initial State
Specified attribute
Transition
Start
End
~Tween~
0
1
}
Intervals
Transition
d3.select("body").transition()
.styleTween("background-color", function() {
return d3.interpolateRgb("green", "red");
});
Transition
d3.select("body").transition()
.styleTween("background-color", function() {
return function(t) {
return "hsl(" + t * 300 + ",100%,50%)"
}
});
Transition Life Cycle
Start
End
Schedule
Run
selection()
.transition()
selection() .transition() .style()
selection()
.delay()
selection()
.styleTween()
selection()
.styleTween('color', function() {
return function(t){
//t
}
})
selection() .duration()
selection()
.easeLinear()
Transitions Exercise
bit.ly/d3AnimateBars
Scale
Scale
If visualization is constructing “visual representations of abstract data to amplify cognition ”, then perhaps the most important concept in D3 is the scale, which maps a dimension of abstract data to a visual variable.
-- Mike Bostock, Creator of D3
Scale
Scale
Scale: Domain v Range
396
166513
10
300
Input Domain
Output Range
Scale: Normalization
396
166513
0
1
56171
~0.338
Scale: Calculations
(166513 - 396)
56171
________________
(Max - Min)
Datapoint
________________
x
available space
(height/width)
300
x
D3 Scale
var scale = d3.scaleLinear()
.domain([396, 166513])
.range([10, 300])
scale(396) // 10
scale(56171) // 107.36962502332692
scale(166513) // 300
Hands on time!
bit.ly/d3ScalesStarter
Hands on time!
bit.ly/d3ScalesFin
Axes
Axes
d3.axisTop(scale)
d3.axisBottom(scale)
d3.axisLeft(scale)
d3.axisRight(scale)
Axes
svg.append('g')
.call(xAxis)
Formatting Tick Labels
svg.axisLeft(scale)
.tickFormat(d3.format(".1%"))
svg.axisLeft(scale)
.tickFormat(d3.timeFormat("%H:%M"))
Formatting # Ticks
svg.axisLeft(scale)
.ticks(5)
Hands On Time!
bit.ly/d3ScalesAxes
D3 Continued
By shortdiv
D3 Continued
- 606