| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <link href="../src/nv.d3.css" rel="stylesheet" type="text/css"> |
| <style> |
| |
| svg.sparkline { |
| width: 500px; |
| height: 70px; |
| font-size: 14px; |
| margin-top: -6px; |
| } |
| |
| |
| </style> |
| <body class='with-3d-shadow with-transitions'> |
| |
| <h2>SparklinePlus:</h2> |
| <p><svg id="chart1" class="sparkline"></svg></p> |
| <br/> |
| <p>APPL:<svg id="chart2" class="sparkline"></svg></p> |
| |
| <p>GOOG:<svg id="chart3" class="sparkline"></svg></p> |
| |
| <script src="../lib/d3.v3.js"></script> |
| <script src="../nv.d3.js"></script> |
| <script src="../src/utils.js"></script> |
| <script src="../src/models/sparkline.js"></script> |
| <script src="../src/models/sparklinePlus.js"></script> |
| <script> |
| |
| function defaultChartConfig(containerId, data) { |
| nv.addGraph(function() { |
| |
| var chart = nv.models.sparklinePlus() |
| |
| chart |
| .margin({left:70}) |
| .x(function(d,i) { return i }) |
| .xTickFormat(function(d) { |
| return d3.time.format('%x')(new Date(data[d].x)) |
| }) |
| |
| d3.select(containerId) |
| .datum(data) |
| .transition().duration(250) |
| .call(chart); |
| |
| |
| return chart; |
| }); |
| } |
| |
| defaultChartConfig("#chart1",sine()); |
| defaultChartConfig("#chart2", volatileChart(130.0, 0.02)); |
| defaultChartConfig("#chart3", volatileChart(25.0, 0.09,30)); |
| |
| |
| function sine() { |
| var sin = []; |
| var now =+new Date(); |
| |
| for (var i = 0; i < 100; i++) { |
| sin.push({x: now + i * 1000 * 60 * 60 * 24, y: Math.sin(i/10)}); |
| } |
| |
| return sin; |
| } |
| |
| function volatileChart(startPrice, volatility, numPoints) { |
| var rval = []; |
| var now =+new Date(); |
| numPoints = numPoints || 100; |
| for(var i = 1; i < numPoints; i++) { |
| |
| rval.push({x: now + i * 1000 * 60 * 60 * 24, y: startPrice}); |
| var rnd = Math.random(); |
| var changePct = 2 * volatility * rnd; |
| if ( changePct > volatility) { |
| changePct -= (2*volatility); |
| } |
| startPrice = startPrice + startPrice * changePct; |
| } |
| return rval; |
| } |
| |
| </script> |