### Example22 - interactivity
Built with blockbuilder.org
### Example22 - interactivity
Built with blockbuilder.org
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta charset="utf-8"> | |
| <title>Intro d3js examples</title> | |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script> | |
| <style> | |
| body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; } | |
| </style> | |
| </head> | |
| <body> | |
| <h1>Intro d3js - example22</h1> | |
| <!--<p> previous paragraph</p>--> | |
| <script type="text/javascript"> | |
| //Width and height | |
| var w = 600; | |
| var h = 250; | |
| var offset = 10; | |
| var dataset = [ 5, 10, 13, 19, 21, 25, 22, 18, 15, 13, | |
| 11, 12, 15, 20, 18, 17, 16, 18, 23, 25 ]; | |
| var xScale = d3.scale.ordinal() | |
| .domain(d3.range(dataset.length)) | |
| .rangeRoundBands([0, w], 0.05); | |
| var yScale = d3.scale.linear() | |
| .domain([0, d3.max(dataset)]) | |
| .range([h, 0]); | |
| //Create SVG element | |
| var svg = d3.select("body") | |
| .append("svg") | |
| .attr("width", w) | |
| .attr("height", h); | |
| //Create bars | |
| svg.selectAll("rect") | |
| .data(dataset) | |
| .enter() | |
| .append("rect") | |
| .attr("x", function(d, i) { | |
| return xScale(i); | |
| }) | |
| .attr("y", function(d) { | |
| return yScale(d); | |
| }) | |
| .attr("width", xScale.rangeBand()) | |
| .attr("height", function(d) { | |
| return h - yScale(d); | |
| }) | |
| .attr("fill", function(d) { | |
| return "rgb(0, 0, " + (d * 10) + ")"; | |
| }) | |
| .on("mouseover", function() { | |
| d3.select(this) | |
| .attr("fill", "orange"); | |
| }) | |
| .on("mouseout", function(d) { | |
| d3.select(this) | |
| .transition() | |
| .duration(250) | |
| .attr("fill", "rgb(0, 0, " + (d * 10) + ")"); | |
| }); | |
| //Create labels | |
| svg.selectAll("text") | |
| .data(dataset) | |
| .enter() | |
| .append("text") | |
| .text(function(d) { | |
| return d; | |
| }) | |
| .attr("text-anchor", "middle") | |
| .attr("x", function(d, i) { | |
| return xScale(i) + xScale.rangeBand() / 2; | |
| }) | |
| .attr("y", function(d) { | |
| return yScale(d) + offset; | |
| }) | |
| .attr("font-family", "sans-serif") | |
| .attr("font-size", "10px") | |
| .attr("fill", "white"); | |
| </script> | |
| </body> | |
| </html> |