Open In App

D3.js chord.sortChords() Function

The chord.sortChords() function in D3.js is used to set the chord comparator to the specified function or null and returns this chord layout.

Syntax:



chord.sortChords(compare);

Parameters: This function accepts a single parameter as mentioned above and described below

Return Value: This function returns the chord layout.



Below programs illustrate the chord.sortChords() function in D3.js

Example 1:




<!DOCTYPE html> 
<html
<head>  
  <meta charset="utf-8">
  <script src="https://d3js.org/d3.v4.js"></script>
</head
<body>
  <center
    <h1 style="color:green;">GeeksForGeeks</h1>
    <h3>D3.js | chord.sortChords() Function</h3>
    <div id="GFG"></div>
    <script>
      // Create the svg area
      var svg = d3.select("#GFG")
          .append("svg")
          .attr("width", 440)
          .attr("height", 220)
          .append("g")
          .attr("transform", "translate(220,220)");
  
      // Create input data
      var data = [[51, 148, 60, 71, 34, 5, 1],
                  [ 10, 161, 80, 80, 12, 34, 53],
                  [175,  71, 16, 68, 0 , 0, 3],
                  [13, 990,  9, 69, 76, 35, 4],
                  [175,  71, 16, 68, 0 , 0, 3],
                  [13, 990,  9, 69, 76, 35, 4],
                  [51, 148, 60, 71, 34, 5, 1]];
  
      // Give this matrix to d3.chord()
      var chords = d3.chord()
          .padAngle(0.2) 
          .sortSubgroups(d3.ascending)
  
          // Use of chord.sortChords() Function
          .sortChords(d3.ascending)(data)
  
      svg.datum(chords)
          .append("g")
          .selectAll("g")
          .data(function (d) { return d.groups; })
          .enter()
          .append("g")
          .append("path")
          .style("fill", "purple")
          .style("stroke", "black")
          .attr("d", d3.arc()
              .innerRadius(170)
              .outerRadius(200)
              );
  
      svg.datum(chords)
          .append("g")
          .selectAll("path")
          .data(function (d) { return d; })
          .enter()
          .append("path")
          .attr("d", d3.ribbon()
              .radius(180)
              )
          .style("fill", "blue")
          .style("stroke", "black");
    </script
  </center>
</body
</html>

Output:

Example 2:




<!DOCTYPE html> 
<html
<head>
  <meta charset="utf-8">
  <script src
  </script>   
  <script src
  </script>
</head
<body
    <center
    <h1 style="color:green;">GeeksForGeeks</h1>
  
    <h3>D3.js | chord.sortChords() Function</h3>
    <div id="GFG"></div>
  
    <script>
      // Create the svg area
      var svg = d3.select("#GFG")
          .append("svg")
          .attr("width", 400)
          .attr("height", 200)
          .append("g")
          .attr("transform", "translate(200,200)");
  
      // Create input data
      var data = [[0, 71, 89, 68, 71, 89, 68],
                  [ 11, 0, 60, 71, 9,  9, 0],
                  [ 10, 145, 0, 85, 145, 0, 85],
                  [ 13, 9,  9, 0, 0, 60, 71],
                  [ 13, 9,  9, 0, 0, 60, 71],
                  [ 10, 145, 0, 85, 145, 0, 85],
                  [0, 71, 89, 68, 71, 89, 68]];
  
      // 4 groups, so create a vector of 4 colors
      var colors_1 = [d3.schemeSet1[0], d3.schemeCategory10[1],
          d3.schemeCategory10[2], d3.schemeCategory10[3],
          d3.schemeCategory10[4], d3.schemeCategory10[5],
          d3.schemeCategory10[6]];
  
      var colors = [d3.schemeSet1[0], d3.schemeSet1[1],
          d3.schemeSet1[2], d3.schemeSet1[3],
          d3.schemeSet1[4], d3.schemeSet1[5],
          d3.schemeSet1[6]];
  
      // Give this matrix to d3.chord()
      var chords = d3.chord()
          .padAngle(0.2)
          .sortSubgroups(d3.ascending)
  
          // Use of chord.sortChords() Function
          .sortChords(d3.descending)(data)
  
      svg.datum(chords)
          .append("g")
          .selectAll("g")
          .data(function (d) { return d.groups; })
          .enter()
          .append("g")
          .append("path")
          .style("fill", function (d, i) {
              return colors[i] 
          })
          .style("stroke", "black")
          .attr("d", d3.arc()
              .innerRadius(150)
              .outerRadius(180)
          );
  
      svg.datum(chords)
          .append("g")
          .selectAll("path")
          .data(function (d) { return d; })
          .enter()
          .append("path")
          .attr("d", d3.ribbon()
              .radius(150)
              )
          .style("fill", function (d, i) {
              return colors_1[i] 
          })
          .style("stroke", "black");
    </script
  </center>
</body
</html>

Output:


Article Tags :