Advertisement
Guest User

Untitled

a guest
Jul 2nd, 2012
397
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html>
  3.   <head>
  4.     <script src="http://d3js.org/d3.v2.js"></script>
  5.     <style>
  6.       .chart rect {
  7.         fill: steelblue;
  8.       }
  9.       .chart text {
  10.         fill: black;
  11.       }
  12.       .axis path, .axis line {
  13.         fill: none;
  14.         stroke: black;
  15.         shape-rendering: crispEdges;
  16.       }
  17.     </style>
  18.   </head>
  19.   <body>
  20.   </body>
  21.   <script>
  22.     var toTime = function(time) {
  23.       var splitTime = time.split(/:/);
  24.       return new Date(2012, 1, 1, splitTime[0], splitTime[1], splitTime[2]);
  25.     }
  26.     var margin ={ left: 30, right: 20, top: 20, bottom: 20};
  27.     var width=800 - margin.left - margin.right;
  28.     var height=400 - margin.top - margin.bottom;
  29.     d3.csv('2011-eldorado-race.csv', function(data) {
  30.  
  31.       data = data.map(function(x) { return toTime(x.time); });
  32.  
  33.       data = d3.layout.histogram().bins(10)(data);
  34.  
  35.       var x = d3.scale.ordinal()
  36.       .domain(data.map(function(d) { return d.x; }))
  37.       .rangeBands([0,width], 0.1);
  38.  
  39.       var y = d3.scale.linear()
  40.       .domain([0, d3.max(data, function(d) { return d.y; })])
  41.       .range([height, 0 ]);
  42.  
  43.       var svg = d3.select('body').append('svg')
  44.       .attr('class', 'chart')
  45.       .attr('width', width + margin.left + margin.right)
  46.       .attr('height',height + margin.top + margin.bottom)
  47.       .append('g')
  48.       .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
  49.  
  50.       //bars
  51.       svg.selectAll('rect')
  52.       .data(data)
  53.         .enter().append('rect')
  54.       .attr('width', x.rangeBand())
  55.       .attr('x', function(d) { return x(d.x); })
  56.       .attr('y', function(d) { return y(d.y); })
  57.       .attr('height', function(d) { return y.range()[0] - y(d.y); })
  58.       .order();
  59.  
  60.       //labels
  61.       svg.selectAll('text.datalabel')
  62.       .data(data)
  63.       .enter()
  64.       .append('svg:text')
  65.       .attr('x', function(d,i) { return x(d.x); })
  66.       .attr('y', function(d,i) { return y(d.y); })
  67.       .attr('dx', x.rangeBand() / 2)
  68.       .attr('dy', '1.2em')
  69.       .attr('text-anchor', 'middle')
  70.       .attr('fill', 'white')
  71.       .text(function(d) { return d.length; })
  72.       .attr('class', 'datalabel');
  73.  
  74.       //axis
  75.       svg.append('g')
  76.       .attr('class', 'y axis')
  77.       .call(d3.svg.axis()
  78.         .scale(y)
  79.         .orient('left'));
  80.  
  81.       //Unable to make this work
  82.       svg.append('g')
  83.       .attr('class', 'x axis')
  84.       .attr('transform', 'translate(0,' + height + ')')
  85.       .call(d3.svg.axis()
  86.         .scale(x)
  87.         .tickFormat(d3.time.format('%H:%M'))
  88.         .orient('bottom'));
  89.     });
  90.   </script>
  91. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement