You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.6 KiB

D3 Build

Lesson Objectives

  1. Add link to d3 library
  2. Add an <svg> tag and size it with D3
  3. Create some fake data for our app
  4. Add SVG circles and style them

First thing we want to do is create basic index.html file:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
    </body>
</html>

Now add a link to D3 at the bottom of your <body> tag in index.html:

<body>    
    <script src="https://d3js.org/d3.v4.min.js"></script>
</body>

Now create app.js, which will store all of our code:

console.log('this works');

and link to it in index.html at the bottom of the <body> tag:

<body>
    <script src="https://d3js.org/d3.v4.min.js"></script>
    <script src="app.js" charset="utf-8"></script>
</body>

Add an <svg> tag and size it with D3

At the top of the <body> tag in index.html, add an <svg> tag:

<body>
    <svg></svg>
    <script src="https://d3js.org/d3.v4.min.js"></script>
    <script src="app.js" charset="utf-8"></script>
</body>

In app.js create variables to hold the width and height of the <svg> tag:

var WIDTH = 800;
var HEIGHT = 600;

Next, we can use d3.select() to select a single element, in this case, the <svg> element:

var WIDTH = 800;
var HEIGHT = 600;

d3.select('svg');

The return value of this is a d3 version of the element (just like jQuery), so we "chain" commands onto this. Let's add some styling to adjust the height/width of the element:

d3.select('svg')
    .style('width', WIDTH)
    .style('height', HEIGHT);

Create some fake data for our app

In app.js let's create an array of "run" objects (NOTE I'm storing the date as a string on purpose):

var WIDTH = 800;
var HEIGHT = 600;

var runs = [
    {
        id: 1,
        date: 'October 1, 2017 at 4:00PM',
        distance: 5.2
    },
    {
        id: 2,
        date: 'October 2, 2017 at 5:00PM',
        distance: 7.0725
    },
    {
        id: 3,
        date: 'October 3, 2017 at 6:00PM',
        distance: 8.7
    }
];

Add SVG circles and style them

Add three circles to your <svg> element (each one will represent a run):

<svg>
    <circle/>
    <circle/>
    <circle/>
</svg>

Create app.css with some styling for the circles:

circle {
    r:5;
    fill: black;
}

and link to it in index.html

<head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" href="app.css">
</head>