I am trying to shade an area between two curves (time series). I adapted an example that I found at C3.js fill area between curves, but I need to use the D3.js version 5, due to my work, and from D3 version 4 some methods have been replaced by others.
Here is my code using D3.js v3:
function fillArea(){
var indexies = d3.range( items.length );
var yscale = linechart.internal.y;
var xscale = linechart.internal.x;
var area = d3.svg.area()
.interpolate("linear")
.x(function(d) {return xscale(new Date(items[d].Index)); })
.y0(function(d) { return yscale(items[d].ymin_sd); })
.y1(function(d) { return yscale(items[d].ymax_sd); });
d3.select("#chart svg g").append('path')
.datum(indexies)
.attr('class', 'area')
.attr('fill', 'red')
.attr('d', area);
}
And the jsfiddle
Here is my code adapted to D3 v5, with version that I need, but the shading does not appear.
function fillArea(){
var indexies = d3.range( items.length );
var yscale = linechart.internal.y;
var xscale = linechart.internal.x;
var area = d3.area()
.curveCardinal()
.x(function(d) {return xscale(new Date(items[d].Index)); })
.y0(function(d) { return yscale(items[d].ymin_sd); })
.y1(function(d) { return yscale(items[d].ymax_sd); });
d3.select("#chart svg g").append('path')
.datum(indexies)
.attr('class', 'area')
.attr('fill', 'red')
.attr('d', area);
}
Here is jsfiddle adapted to D3 v5.
Anyone can help me what I am doing wrong in my code?