The chord.sortSubgroups() function in D3.js is used to set the subgroup comparator to the specified function or null and returns this chord layout.
Syntax:
chord.sortSubgroups([compare]);
Parameters: This function accepts a single parameter as mentioned above and described below:
- compare: This parameter is the function to set the subgroup comparator.
Return Value: This function returns the chord layout.
Below programs illustrate the chord.sortSubgroups() function in D3.js
Example 1:
<!DOCTYPE html> <html> <head>     <meta charset="utf-8"> </head> <body>     <center>         <h1 style="color:green;">GeeksForGeeks</h1>                     <h3>D3.js | chord.sortSubgroups() Function</h3>         <div id="GFG"></div>                   <script>             // Create the svg area             var svg = d3.select("#GFG")                 .append("svg")                 .attr("width", 320)                 .attr("height", 320)                 .append("g")                 .attr("transform", "translate(160, 160)")                                       // Create input data             var data = [[ 10, 161, 80, 80, 12, 34, 53],                  [13, 990, 9, 69, 76, 35, 4],                  [175, 71, 16, 68, 0, 0, 3],                  [51, 148, 60, 71, 34, 5, 1],                  [13, 990, 9, 69, 76, 35, 4],                  [175, 71, 16, 68, 0, 0, 3],                  [51, 148, 60, 71, 34, 5, 1]];                                        // Give this matrix to d3.chord()             var chords = d3.chord()                 .padAngle(0.2)                                   // Use of chord.sortSubgroups() Function                 .sortSubgroups(d3.ascending)                 (data)                                       svg.datum(chords)                 .append("g")                 .selectAll("g")                 .data(function (d) { return d.groups; })                 .enter()                 .append("g")                 .append("path")                 .style("fill", "yellow")                 .style("stroke", "black")                 .attr("d", d3.arc()                     .innerRadius(100)                     .outerRadius(150)                     )                                   svg.datum(chords)                 .append("g")                 .selectAll("path")                 .data(function (d) { return d; })                 .enter()                 .append("path")                 .attr("d", d3.ribbon()                     .radius(120)                     )                 .style("fill", "purple")                 .style("stroke", "black");         </script>     </center> </body> </html> |
Output:
Example 2:
<!DOCTYPE html> <html> <head>     <meta charset="utf-8">        </script>      <script src=     </script>      <script src=     </script> </head>   <body>     <center>         <h1 style="color:green;">GeeksForGeeks</h1>                     <h3>D3.js | chord.sortSubgroups() Function</h3>         <div id="GFG"></div>                   <script>             // Create the svg area             var svg = d3.select("#GFG")                 .append("svg")                 .attr("width", 340)                 .attr("height", 340)                 .append("g")                 .attr("transform", "translate(170, 170)")                               // 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)                                   // Use of chord.sortSubgroups() Function                 .sortSubgroups(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(160)                 )                           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:

