Line | |
---|
1 | var w = 960, |
---|
2 | h = 40; |
---|
3 | |
---|
4 | var chart = d3.chart.horizon() |
---|
5 | .width(w) |
---|
6 | .height(h) |
---|
7 | .bands(5) |
---|
8 | .mode("offset") |
---|
9 | .interpolate("basis"); |
---|
10 | |
---|
11 | var svg = d3.select("#chart").append("svg:svg") |
---|
12 | .attr("width", w) |
---|
13 | .attr("height", h); |
---|
14 | |
---|
15 | d3.json("unemployment.json", function(data) { |
---|
16 | |
---|
17 | // Offset so that positive is above-average and negative is below-average. |
---|
18 | var mean = data.rate.reduce(function(p, v) { return p + v; }, 0) / data.rate.length; |
---|
19 | |
---|
20 | // Transpose column values to rows. |
---|
21 | data = data.rate.map(function(rate, i) { |
---|
22 | return [Date.UTC(data.year[i], data.month[i] - 1), rate - mean]; |
---|
23 | }); |
---|
24 | |
---|
25 | // Render the chart. |
---|
26 | svg.data([data]).call(chart); |
---|
27 | |
---|
28 | // Enable mode buttons. |
---|
29 | d3.selectAll("#mode button") |
---|
30 | .data(["offset", "mirror"]) |
---|
31 | .on("click", function(m) { |
---|
32 | svg.call(chart.duration(0).mode(m)); |
---|
33 | d3.selectAll("#mode button") |
---|
34 | .classed("active", function(d) { return d == m; }); |
---|
35 | }); |
---|
36 | |
---|
37 | // Enable bands buttons. |
---|
38 | d3.selectAll("#bands button") |
---|
39 | .data([-1, 1]) |
---|
40 | .on("click", function bands(db) { |
---|
41 | svg.call(chart.duration(1000).bands(Math.max(1, chart.bands() + db))); |
---|
42 | }); |
---|
43 | }); |
---|
Note: See
TracBrowser
for help on using the repository browser.