Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <script type="text/javascript" src="http://mbostock.github.com/d3/d3.js"></script>
        <style type="text/css">
            
            .axis path,
            .axis line {
                fill: none;
                stroke: black;
                shape-rendering: crispEdges;
            }
            
            .axis text {
                font-family: sans-serif;
                font-size: 11px;
            }
        </style>
    </head>
    <body>
        <script type="text/javascript">
            //Width and height
            var w = 500;
            var h = 300;
            var padding = 30;
            
            var now = d3.time.hour.utc(new Date);
            //Static dataset
            var dataset = [
              {x: d3.time.hour.utc.offset(now, -5), y1: 1, y2: 10}, 
              {x: d3.time.hour.utc.offset(now, -4), y1: 2, y2: 20},
              {x: d3.time.hour.utc.offset(now, -3), y1: 3, y2: 30},
              {x: d3.time.hour.utc.offset(now, -2), y1: 4, y2: 40},
              {x: d3.time.hour.utc.offset(now, -1), y1: 5, y2: 50},
              {x: now, y1: 6, y2: 60},
            ];
                            
            var xDomain = d3.extent(dataset, function(i) { return i.x; });
              
            //Create scale functions
            var xScale = d3.time.scale()
                           .domain(xDomain)
                           .range([padding, w - padding * 2]);
            var maxY = d3.max(dataset, function(i) { 
              return Math.max(i.y1, i.y2); 
            });          
          
            var yScale = d3.scale.linear()
                           .domain([0, maxY])
                           .range([h - padding, padding]);
            //Define X axis
            var xAxis = d3.svg.axis()
                              .scale(xScale)
                              .orient("bottom")
                              .ticks(5);
            //Define Y axis
            var yAxis = d3.svg.axis()
                              .scale(yScale)
                              .orient("left")
                              .ticks(5);
            //Create SVG element
            var svg = d3.select("body")
                        .append("svg")
                        .attr("width", w)
                        .attr("height", h);
            //Create circles
            svg.selectAll(".y1")
               .data(dataset)
               .enter()
               .append("circle")
               .attr("cx", function(d) {
                    return xScale(d.x);
               })
               .attr("cy", function(d) {
                    return yScale(d.y1);
               })
               .attr("class", "y1")
               .attr("r", 2);
          
            //Create circles
            svg.selectAll(".y2")
               .data(dataset)
               .enter()
               .append("circle")
               .attr("cx", function(d) {
                    return xScale(d.x);
               })
               .attr("cy", function(d) {
                    return yScale(d.y2);
               })
               .attr("class", "y2")
               .attr("r", 2);
          
            //Create X axis
            svg.append("g")
                .attr("class", "axis")
                .attr("transform", "translate(0," + (h - padding) + ")")
                .call(xAxis);
            
            //Create Y axis
            svg.append("g")
                .attr("class", "axis")
                .attr("transform", "translate(" + padding + ",0)")
                .call(yAxis);
        </script>
    </body>
</html>
Output 300px

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers