| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| |
| <link href="../src/d3.css" rel="stylesheet" type="text/css"> |
| |
| <style> |
| |
| body { |
| overflow-y:scroll; |
| margin: 0; |
| padding: 0; |
| } |
| |
| svg { |
| overflow: hidden; |
| } |
| |
| div { |
| border: 0; |
| margin: 0; |
| } |
| |
| |
| #offsetDiv { |
| } |
| |
| |
| #test1 { |
| margin: 0; |
| } |
| |
| |
| </style> |
| |
| <body> |
| |
| <div id="offsetDiv"> |
| <div id="test1" class="chartWrap"> |
| <svg></svg> |
| </div> |
| </div> |
| |
| <script src="../lib/d3.v2.js"></script> |
| <script src="../nv.d3.js"></script> |
| <script src="../src/tooltip.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/scatterWithLegend.js"></script> |
| <script> |
| |
| |
| |
| //Format A |
| nv.addGraph({ |
| generate: function() { |
| var width = nv.utils.windowSize().width - 40, |
| height = nv.utils.windowSize().height - 40; |
| |
| var chart = nv.models.scatterWithLegend() |
| .width(width) |
| .height(height) |
| .showDistX(true) |
| .showDistY(true) |
| .color(d3.scale.category10().range()); |
| //.width(width) |
| //.height(height) |
| //.forceX([-4,4]) |
| //.forceY([-4,4]) |
| //.margin({top: 20, right: 10, bottom: 50, left: 80}) |
| |
| |
| //chart.xaxis.tickFormat(d3.format(".02f")) |
| |
| var svg =d3.select('#test1 svg') |
| .datum(randomData()); |
| |
| |
| svg.transition().duration(500) |
| .attr('width', width) |
| .attr('height', height) |
| .call(chart) |
| //.attr('width', wid0th) |
| //.attr('height', height) |
| |
| return chart; |
| }, |
| callback: function(graph) { |
| |
| graph.dispatch.on('tooltipShow', function(e) { |
| var offsetElement = document.getElementById("test1"), |
| left = e.pos[0] + offsetElement.offsetLeft, |
| top = e.pos[1] + offsetElement.offsetTop, |
| formatter = d3.format(".2f"); |
| |
| |
| /* |
| var content = '<h3>' + e.series.key + '</h3>' + |
| '<p>' + |
| '<span class="value"><span class="label">x:</span><span class="val">' + formatter(e.point.x) + '</span></span><br>' + |
| '<s0pan class="value"><span class="label">y:</span><span class="val">' + formatter(e.point.y) + '</span></span>' + |
| '</p>'; |
| |
| nvtooltip.show([left, top], content); |
| */ |
| |
| var contentX = '<strong>' + formatter(e.point.x) + '</strong>'; |
| var contentY = '<strong>' + formatter(e.point.y) + '</strong>'; |
| var height = nv.utils.windowSize().height - 40; |
| |
| nv.tooltip.show([left, height - 50], contentX, 'n', 1); |
| nv.tooltip.show([5, top], contentY, 'w', 1); |
| }); |
| |
| |
| graph.dispatch.on('tooltipHide', function(e) { |
| nv.tooltip.cleanup(); |
| }); |
| |
| window.onresize = function() { |
| var width = nv.utils.windowSize().width - 40, |
| height = nv.utils.windowSize().height - 40, |
| margin = graph.margin(); |
| |
| |
| if (width < margin.left + margin.right + 20) |
| width = margin.left + margin.right + 20; |
| |
| if (height < margin.top + margin.bottom + 20) |
| height = margin.top + margin.bottom + 20; |
| |
| |
| graph |
| .width(width) |
| .height(height); |
| |
| d3.select('#test1 svg') |
| .attr('width', width) |
| .attr('height', height) |
| .call(graph); |
| |
| }; |
| } |
| }); |
| |
| |
| function randomData() { |
| var data = [], |
| random = d3.random.normal(); |
| |
| for (i = 0; i < 2; i++) { |
| data.push({ |
| key: 'Group ' + i, |
| values: [] |
| }); |
| |
| for (j = 0; j < 100; j++) { |
| data[i].values.push({x: random(), y: random(), size: Math.random()}); |
| } |
| } |
| |
| return data; |
| } |
| |
| |
| |
| </script> |