| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| |
| <link href="../src/nv.d3.css" rel="stylesheet" type="text/css"> |
| <link href="teststyle.css" rel="stylesheet" type='text/css'> |
| |
| <body> |
| <div class='navigation'> |
| Tests: |
| <a href="lineChartTest.html">Line Chart</a> |
| <a href="stackedAreaChartTest.html">Stacked Area</a> |
| <a href="../examples/cumulativeLineChart.html">Cumulative Line</a> |
| <a href="ScatterChartTest.html">Scatter</a> |
| </div> |
| <h3>Example showing real time chart updating</h3> |
| The chart below is a historical bar chart, which is ideal for visualizing time series data.<br/> |
| First, you need to update the data model for the chart. In the example, we append a random number |
| every half a second. Then, you call <strong>chart.update()</strong>. |
| |
| <div id='chart' class='chart half with-transitions'> |
| <svg></svg> |
| <button id='start-stop-button'>Start/Stop Stream</button> |
| </div> |
| |
| |
| <script src="../lib/d3.v3.js"></script> |
| <script src="../nv.d3.js"></script> |
| <script src="../src/tooltip.js"></script> |
| <script src="../src/utils.js"></script> |
| <script src="../src/interactiveLayer.js"></script> |
| <script src="../src/models/legend.js"></script> |
| <script src="../src/models/axis.js"></script> |
| <script src="../src/models/scatter.js"></script> |
| <script src="../src/models/line.js"></script> |
| <script src="../src/models/lineChart.js"></script> |
| <script src="../src/models/historicalBar.js"></script> |
| <script src="../src/models/historicalBarChart.js"></script> |
| |
| <script> |
| var chart; |
| var data = [{ |
| key: "Stream 1", |
| color: "orange", |
| values: [ |
| {x: 1, y: 1} |
| ] |
| }]; |
| nv.addGraph(function() { |
| |
| chart = nv.models.historicalBarChart(); |
| |
| chart |
| .x(function(d,i) { return d.x }); |
| |
| chart.xAxis // chart sub-models (ie. xAxis, yAxis, etc) when accessed directly, return themselves, not the parent chart, so need to chain separately |
| .tickFormat(d3.format(',.1f')) |
| .axisLabel("Time") |
| ; |
| |
| chart.yAxis |
| .axisLabel('Random Number') |
| .tickFormat(d3.format(',.4f')); |
| |
| chart.showXAxis(true).showYAxis(true).rightAlignYAxis(true).margin({right: 90}); |
| |
| d3.select('#chart svg') |
| .datum(data) |
| .transition().duration(500) |
| .call(chart); |
| |
| nv.utils.windowResize(chart.update); |
| |
| return chart; |
| }); |
| |
| var x = 2; |
| var run = true; |
| setInterval(function(){ |
| if (!run) return; |
| |
| var spike = (Math.random() > 0.95) ? 10: 1; |
| data[0].values.push({ |
| x: x, |
| y: Math.random() * spike |
| }); |
| |
| if (data[0].values.length > 70) { |
| data[0].values.shift(); |
| } |
| x++; |
| |
| chart.update(); |
| }, 500); |
| |
| d3.select("#start-stop-button").on("click",function() { |
| run = !run; |
| }); |
| |
| </script> |
| |
| </body> |
| </html> |