vis_app_1_simple_scatter

by Simon Raper

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/d3-tip/0.6.7/d3-tip.min.js"></script>
<div id ="container">
    <div id ="header">
        <h3>Demo Scatterplot</h3>
    </div>
    <div id ="sidebar">
    </div>
    <div id ="content">
        <svg height="400" width="650">
        </svg>
    </div>
    <div id ="footer">
    </div>
 </div>

JavaScript

//Set up the data

progs = [{
        "name": "Cops",
        "group": 1,
        "audience_size": 34,
        "avg_mins_viewed": 33.5
    }, {
        "name": "The Day This Morning",
        "group": 1,
        "audience_size": 16,
        "avg_mins_viewed": 4.6
    }, {
        "name": "Love Rats",
        "group": 2,
        "audience_size": 11,
        "avg_mins_viewed": 22.2
    }, {
        "name": "Big Feet",
        "group": 2,
        "audience_size": 28,
        "avg_mins_viewed": 33.5
    }, {
        "name": "Another Reality Show",
        "group": 2,
        "audience_size": 10,
        "avg_mins_viewed": 64.1
    }, {
        "name": "Star Wars Makeovers",
        "group": 3,
        "audience_size": 4,
        "avg_mins_viewed": 12.9
    }, {
        "name": "Film Night",
        "group": 3,
        "audience_size": 8,
        "avg_mins_viewed": 10.0
    }, {
        "name": "The Evening News",
        "group": 1,
        "audience_size": 44,
        "avg_mins_viewed": 49.1
    }, {
        "name": "Bored",
        "group": 3,
        "audience_size": 18,
        "avg_mins_viewed": 61.1
    }];
    
    
//Set constants
var w = 420,
    h = 400,
    padding = 30;
    
    
//Create adaptable scales
var xScale = d3.scale.linear()
.domain([0, d3.max(progs, function(d) {return d.audience_size;})])
    .range([padding, w - padding]);
var yScale = d3.scale.linear()
    .domain([0, d3.max(progs, function(d) {return d.avg_mins_viewed;})])
    .range([h - padding, padding]);
    
 //Select the svg
 svg = d3.select("svg");
     
 //Define and set up the tooltip
 var tip = d3.tip()
         .attr('class', 'd3-tip')
         .offset([-10, 0])
         .html(function (d) {
         return d.name;
     });
 svg.call(tip);
     
     
 //Set up the circles
 diag_circles = svg.selectAll("circle");
 diag_circles.data(progs)
     .enter()
     .append("circle")
     .attr("cx", function(d){return d.audience_size*10})
     .attr("cy", function(d){return...