diff --git a/data.js b/data.js new file mode 100644 index 0000000..faaa6e5 --- /dev/null +++ b/data.js @@ -0,0 +1,98 @@ +;(function (exports) { + + exports.ggData = {}; + + // Generate some random data. + ggData.data = (function () { + var data = []; + var x = 0; + var y = 0; + _.times(20, function () { + x += Math.random() * 30; + y += 20 - Math.random() * 30; + data.push({ + d: x, + r: y, + }); + }); + return data; + }()); + + // Generate some random data for plotting semi-log. + ggData.semiLogData = (function () { + var data = []; + var x = 0; + var y = 1; + _.times(20, function () { + x += Math.random() * 30; + y *= Math.random() * 5; + data.push({ + d: x, + r: y, + }); + }); + return data; + }()); + + + // Some categorical data + ggData.categoricalData = [ + { category: 'foo', count: 100 }, + { category: 'bar', count: 59 }, + { category: 'baz', count: 212 }, + { category: 'quux', count: 76 } + ]; + + // Some random variables. + var randomHeight = d3.random.normal(66, 18); + var randomBMI = d3.random.normal(21.75, 3); + var standardNormal = d3.random.normal(); + + // bmi = lbs/inches^2 * 703.06958 + // lbs = bmi * inches^2 / 703.06958 + + // Some data to be plotted with a histograpm + ggData.heightWeight = (function () { + var data = []; + _.times(20000, function () { + var inches = randomHeight(); + var lbs = randomBMI() * inches * inches / 703.06958; + data.push({ + // These should really be correlated. + height: inches, + weight: lbs, + }); + }); + return data; + }()); + + ggData.normalData = _.map(_.range(20000), function (i) { return { v: standardNormal() }; }); + + // Pre-digested data for box plot geometry. + ggData.boxPlotData = [ + { group: 'a', 'median': 200, 'q1': 50, 'q3': 275, 'lower': 25, 'upper': 360, 'outliers': [ -200, -175, 0, 10, 400, 500 ] }, + { group: 'b', 'median': 350, 'q1': 60, 'q3': 375, 'lower': 20, 'upper': 500, 'outliers': [ -150, -100, 0, 5, 550, 575, 650 ] }, + ]; + + // Data intended to be digested for box plotting. + ggData.dataForBoxPlots = (function () { + var names = ['a', 'b', 'c', 'd' ]; + var randomMeans = d3.random.normal(500, 20); + var randomStddevs = d3.random.normal(50, 10); + var groups = _.map(names, function (n) { + return { + name: n, + rng: d3.random.normal(randomMeans(), randomStddevs) + } + }); + return _.map(_.range(20000), function () { + var g = groups[Math.floor(Math.random() * groups.length)]; + return { + group: g.name, + value: g.rng() + }; + }); + }()); + + +})(window); \ No newline at end of file diff --git a/examples.js b/examples.js index 9856514..303bf38 100644 --- a/examples.js +++ b/examples.js @@ -1,76 +1,5 @@ ;(function () { - // Generate some random data. - var data = (function () { - var data = []; - var x = 0; - var y = 0; - _.times(20, function () { - x += Math.random() * 30; - y += 20 - Math.random() * 30; - data.push({ - d: x, - r: y, - }); - }); - return data; - }()); - - // Generate some random data for plotting semi-log. - var semiLogData = (function () { - var data = []; - var x = 0; - var y = 1; - _.times(20, function () { - x += Math.random() * 30; - y *= Math.random() * 5; - data.push({ - d: x, - r: y, - }); - }); - return data; - }()); - - - // Some categorical data - var categoricalData = [ - { category: 'foo', count: 100 }, - { category: 'bar', count: 59 }, - { category: 'baz', count: 212 }, - { category: 'quux', count: 76 } - ]; - - // Some random variables. - var randomHeight = d3.random.normal(66, 18); - var randomBMI = d3.random.normal(21.75, 3); - var standardNormal = d3.random.normal(); - - // bmi = lbs/inches^2 * 703.06958 - // lbs = bmi * inches^2 / 703.06958 - - // Some data to be plotted with a histograpm - var heightWeight = (function () { - var data = []; - _.times(20000, function () { - var inches = randomHeight(); - var lbs = randomBMI() * inches * inches / 703.06958; - data.push({ - // These should really be correlated. - height: inches, - weight: lbs, - }); - }); - return data; - }()); - - var normalData = _.map(_.range(20000), function (i) { return { v: standardNormal() }; }); - - var boxPlotData = [ - { group: 'a', 'median': 200, 'q1': 50, 'q3': 275, 'lower': 25, 'upper': 360, 'outliers': [ -200, -175, 0, 10, 400, 500 ] }, - { group: 'b', 'median': 350, 'q1': 60, 'q3': 375, 'lower': 20, 'upper': 500, 'outliers': [ -150, -100, 0, 5, 550, 575, 650 ] }, - ]; - $(document).ready(function() { function ex () { return d3.select('#examples').append('span'); } @@ -176,16 +105,16 @@ }); // ... and render 'em - scatterplot.render(ex(), data); - linechart.render(ex(), data); - barchart.render(ex(), data); - histogram.render(ex(), categoricalData); - combined_points_and_line.render(ex(), data); - semi_log_scale.render(ex(), semiLogData); - heightHistogram.render(ex(), heightWeight); - heightWeightScatter.render(ex(), heightWeight); - //normalHistogram.render(ex(), normalData); - boxPlot.render(ex(), boxPlotData); + scatterplot.render(ex(), ggData.data); + linechart.render(ex(), ggData.data); + barchart.render(ex(), ggData.data); + histogram.render(ex(), ggData.categoricalData); + combined_points_and_line.render(ex(), ggData.data); + semi_log_scale.render(ex(), ggData.semiLogData); + heightHistogram.render(ex(), ggData.heightWeight); + heightWeightScatter.render(ex(), ggData.heightWeight); + //normalHistogram.render(ex(), ggData.normalData); + boxPlot.render(ex(), ggData.boxPlotData); }); diff --git a/index.html b/index.html index 27e4e8d..06de8d8 100644 --- a/index.html +++ b/index.html @@ -9,6 +9,7 @@ +