--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/toolkit/javascript/d3/examples/horizon/horizon.js Thu Apr 10 14:20:23 2014 +0200
@@ -0,0 +1,43 @@
+var w = 960,
+ h = 40;
+
+var chart = d3.chart.horizon()
+ .width(w)
+ .height(h)
+ .bands(5)
+ .mode("offset")
+ .interpolate("basis");
+
+var svg = d3.select("#chart").append("svg:svg")
+ .attr("width", w)
+ .attr("height", h);
+
+d3.json("unemployment.json", function(data) {
+
+ // Offset so that positive is above-average and negative is below-average.
+ var mean = data.rate.reduce(function(p, v) { return p + v; }, 0) / data.rate.length;
+
+ // Transpose column values to rows.
+ data = data.rate.map(function(rate, i) {
+ return [Date.UTC(data.year[i], data.month[i] - 1), rate - mean];
+ });
+
+ // Render the chart.
+ svg.data([data]).call(chart);
+
+ // Enable mode buttons.
+ d3.selectAll("#mode button")
+ .data(["offset", "mirror"])
+ .on("click", function(m) {
+ svg.call(chart.duration(0).mode(m));
+ d3.selectAll("#mode button")
+ .classed("active", function(d) { return d == m; });
+ });
+
+ // Enable bands buttons.
+ d3.selectAll("#bands button")
+ .data([-1, 1])
+ .on("click", function bands(db) {
+ svg.call(chart.duration(1000).bands(Math.max(1, chart.bands() + db)));
+ });
+});