Built with blockbuilder.org
forked from romsson's block: D3 bar chart without data-binding
forked from anonymous's block: D3 bar chart with data-binding
forked from anonymous's block: D3 bar chart with data-binding
license: mit |
Built with blockbuilder.org
forked from romsson's block: D3 bar chart without data-binding
forked from anonymous's block: D3 bar chart with data-binding
forked from anonymous's block: D3 bar chart with data-binding
<!DOCTYPE html> | |
<head> | |
<meta charset="utf-8"> | |
<script src="https://d3js.org/d3.v4.min.js"></script> | |
<style> | |
rect { | |
fill: white; | |
stroke: black; | |
stroke-width: 1; | |
} | |
</style> | |
</head> | |
<body> | |
<script> | |
var svg = d3.select("body").append("svg") | |
.attr("width", 960) | |
.attr("height", 500); | |
var data = [22, 32, 21, 23, 10, 22, 11, 19, 30, 50, 19, 30, 50, 19, 30, 87, 12,13, 14, 15, 20, 100, ]; | |
var y = d3.scaleLinear() | |
.domain([0, d3.max(data)]) | |
.range([0, +d3.select("svg").attr("height")/3]); | |
// ordinal | |
var x = d3.scaleBand() | |
.domain(data) | |
.range([0, +d3.select("svg").attr("width")]); | |
var s = svg.selectAll("rect").data(data); | |
s.enter() | |
.append("rect") | |
svg.selectAll("rect") | |
.attr("width", function(d, i) { return x.bandwidth(); }) | |
.attr("height", function(d, i) { return y(d); }) | |
.attr("x", function(d, i) { return x(d); }) | |
.attr("y", function(d) { return 200 - y(d); }) | |
.on("mouseenter", function(d) { | |
d3.select(this).style("fill", "red") | |
}) | |
.on("mouseleave", function(d) { | |
if(d.__clicked !== true) { | |
d3.select(this).style("fill", "white") | |
} | |
}) | |
.on("click", function(d) { | |
d3.select(this).style("fill", "green") | |
d.__clicked = true; | |
}) | |
</script> | |
</body> |