nice math graphs
by Nivaldo
CoffeeScript
interpolator = d3.scale.log()
pointAtX = (a, b, x) ->
interpolator
.domain([a[0], b[0]])
.range([a[1], b[1]])
[x, interpolator(x)]
A = [15, 90]
B = [85, 40]
line = d3.svg.line()
p0 = pointAtX(A, B, 0)
p1 = pointAtX(A, B, 100)
line = d3.svg.line()
.x( (d) -> d)
.y( (d) -> pointAtX(A, B, d)[1])
svg = d3.select('body').append('svg')
svg
.selectAll('g')
.data(['linear', 'sqrt', 'log', 'quantize'])
.enter()
.append('g')
.each (scaleType, i) ->
interpolator = d3.scale[scaleType]()
g = d3.select(@)
.attr 'transform', "translate(#{180*(i%2)},#{Math.floor(i/2)*200})"
g.append('path')
.attr
stroke: 'lightgrey'
fill: 'none'
d: line([1...100])
# reference line
interpolator = d3.scale.linear()
g.append('path')
.attr
stroke: 'red'
fill: 'none'
d: line([15, 85])
g.append('text').text(scaleType)
.attr 'y', 20