9951 explained code solutions for 126 technologies


javascript-d3How do I use the JavaScript D3 documentation to create a graph?


The JavaScript D3 library is a powerful tool for creating data-driven documents. To create a graph using D3, you will need to first include the library in your HTML document. This can be done by adding the following line of code to the section of your HTML document:

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

Once D3 is included, you can create a graph by defining the data, setting the margins, creating an SVG element, and drawing the graph elements. For example, the following code will create a basic line graph from a set of data:

// set the dimensions and margins of the graph
var margin = {top: 20, right: 20, bottom: 30, left: 50},
    width = 960 - margin.left - margin.right,
    height = 500 - margin.top - margin.bottom;

// parse the date / time
var parseTime = d3.timeParse("%d-%b-%y");

// set the ranges
var x = d3.scaleTime().range([0, width]);
var y = d3.scaleLinear().range([height, 0]);

// define the line
var valueline = d3.line()
    .x(function(d) { return x(d.date); })
    .y(function(d) { return y(d.close); });

// append the svg obgect to the body of the page
// appends a 'group' element to 'svg'
// moves the 'group' element to the top left margin
var svg = d3.select("body").append("svg")
    .attr("width", width + margin.left + margin.right)
    .attr("height", height + margin.top + margin.bottom)
  .append("g")
    .attr("transform",
          "translate(" + margin.left + "," + margin.top + ")");

// get the data
d3.csv("data.csv", function(error, data) {
  if (error) throw error;

  // format the data
  data.forEach(function(d) {
      d.date = parseTime(d.date);
      d.close = +d.close;
  });

  // scale the range of the data
  x.domain(d3.extent(data, function(d) { return d.date; }));
  y.domain([0, d3.max(data, function(d) { return d.close; })]);

  // add the valueline path.
  svg.append("path")
      .data([data])
      .attr("class", "line")
      .attr("d", valueline);

  // add the X Axis
  svg.append("g")
      .attr("transform", "translate(0," + height + ")")
      .call(d3.axisBottom(x));

  // add the Y Axis
  svg.append("g")
      .call(d3.axisLeft(y));

});

This code will generate a line graph with the x-axis representing the dates from the data set and the y-axis representing the close values.

The code consists of the following parts:

  1. Setting the dimensions and margins of the graph.
  2. Parsing the date/time.
  3. Setting the ranges of the x and y axes.
  4. Defining the line using the data set.
  5. Appending the SVG element to the body of the page.
  6. Retrieving the data.
  7. Formatting the data.
  8. Scaling the range of the data.
  9. Adding the valueline path.
  10. Adding the x and y axes.

For more information, please refer to the D3.js documentation and the D3 v5 API Reference.

Edit this code on GitHub