D3.js curveMonotoneX() Method

The d3.curveMonotoneX interpolator assumes that the data is sorted according to the x coordinates otherwise sort the data accordingly. This curve method produces a cubic spline that preserves monotonicity in y, assuming monotonicity in x.
Syntax:
d3.curveMonotoneX()
Parameters: This method does not accept any parameters.
Return Value: This method does not return any value.
Example 1:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src= </script> </head> <body> <h1 style="text-align:center; color:green;"> zambiatek </h1> <center> <svg id="gfg" width="250" height="250"></svg> </center> <script> var data = [ {x: 0, y: 0}, {x: 1, y: 3}, {x: 2, y: 15}, {x: 5, y: 1}, {x: 6, y: 15}, {x: 7, y: 5}, {x: 8, y: 19}]; var xScale = d3.scaleLinear() .domain([0, 8]).range([25, 200]); var yScale = d3.scaleLinear() .domain([0, 20]).range([200, 25]); var line = d3.line() .x((d) => xScale(d.x)) .y((d) => yScale(d.y)) .curve(d3.curveMonotoneX); d3.select("#gfg") .append("path") .attr("d", line(data)) .attr("fill", "none") .attr("stroke", "green"); </script> </body> </html> |
Output:
Example 2: Sorting the unsorted points by the x-axis then rendering the curve.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src= </script> </head> <body> <h1 style="text-align:center; color:green;"> zambiatek </h1> <center> <svg id="gfg" width="250" height="200"></svg> </center> <script> var points = [ {xpoint: 75, ypoint: 150}, {xpoint: 25, ypoint: 5}, {xpoint: 150, ypoint: 115}, {xpoint: 100, ypoint: 5}, {xpoint: 200, ypoint: 150}]; // Sorting the points by x axis points.sort((a, b) => a.xpoint - b.xpoint); var Gen = d3.line() .x((p) => p.xpoint) .y((p) => p.ypoint) .curve(d3.curveMonotoneX); d3.select("#gfg") .append("path") .attr("d", Gen(points)) .attr("fill", "none") .attr("stroke", "green"); </script> </body> </html> |
Output:
Whether you’re preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, zambiatek Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we’ve already empowered, and we’re here to do the same for you. Don’t miss out – check it out now!




