malkomalko
4/19/2013 - 3:55 PM

histogram

histogram

svg {
  position: absolute;
  width: 770px;
  height: 720px;
}

.bar rect {
  fill: steelblue;
  shape-rendering: crispEdges;
}

.bar text {
  fill: #fff;
}

.axis path, .axis line {
  fill: none;
  stroke: #000;
  shape-rendering: crispEdges;
}
var width = $("svg").width()
  , height = $("svg").height()
  , svg = d3.select("svg")

var margin = 80
  , formatCount = d3.format(",.0f")
  , bucketSize = 10
  , max = Math.ceil(d3.max(data) / bucketSize) * bucketSize
  , bins = max / bucketSize

var x = d3.scale.linear().domain([0, max]).range([0, width])
  , hist = d3.layout.histogram().bins(x.ticks(bins))(data)
  , y = d3.scale.linear().domain([0, d3.max(hist, h.prop("y"))]).range([height, 0])
  , xAxis = d3.svg.axis().scale(x).orient("bottom")

svg
  .attr("width", width)
  .attr("height", height)
  .append("g")
    .attr("transform", "translate(" + margin + "," + margin + ")")

var bar = svg.selectAll(".bar")
    .data(hist)
  .enter().append("g")
    .attr("class", "bar")
    .attr("transform", function(d){ return "translate(" + x(d.x) + "," + y(d.y) + ")" })

bar.append("rect")
    .attr("x", 1)
    .attr("width", x(hist[0].dx) - 1)
    .attr("height", function(d){ return height - y(d.y) })

bar.append("text")
    .attr("dy", ".75em")
    .attr("y", 6)
    .attr("x", x(hist[0].dx) / 2)
    .attr("text-anchor", "middle")
    .text(function(d){ return formatCount(d.y) })

svg.append("g")
    .attr("class", "x axis")
    .attr("transform", "translate(0," + height + ")")
    .call(xAxis)
window.h = {}

h.prop = function(attr){
  return function(d){
    return d[attr]
  }
}

h.propToScale = function(attr, scale){
  return function(d){
    return scale(d[attr])
  }
}
window.data = [
  21,17,9,27,39,4,12,14,12,32,
  19,38,9,22,3,31,8,14,21,15,
  29,33
]
{"description":"histogram","endpoint":"","display":"svg","public":true,"require":[],"fileconfigs":{"inlet.js":{"default":true,"vim":false,"emacs":false,"fontSize":12},"data.js":{"default":true,"vim":false,"emacs":false,"fontSize":12},"style.css":{"default":true,"vim":false,"emacs":false,"fontSize":12},"helpers.js":{"default":true,"vim":false,"emacs":false,"fontSize":12},"_.md":{"default":true,"vim":false,"emacs":false,"fontSize":12},"config.json":{"default":true,"vim":false,"emacs":false,"fontSize":12}},"fullscreen":false,"play":false,"loop":false,"restart":false,"autoinit":true,"pause":true,"loop_type":"period","bv":false,"nclones":15,"clone_opacity":0.4,"duration":3000,"ease":"linear","dt":0.01}

[ Launch: scatter plot ] 5421268 by malkomalko
[ Launch: scatter plot ] 5420839 by malkomalko