Используя многолинейные графики в D3, я пытаюсь изменить свойства каждого сегмента линии (изменить цвет и ширину), применяя функцию interpolate (), которая изгибает линию.
Однако, когда я рисую линию, задавая координаты x1, y1 и x2, y2 (в отличие от линии (данных)), функция кривой не применяется.
Ниже приведен текущий код, который задает координаты x1, y1 и x2, y2 линии.Благодаря этому я могу изменить свойства каждого отрезка.
// Line deceleration
var line = d3.svg.line()
.x(function(d) { return x(d.date); })
.y(function(d) { return y(d.percent_change); });
// Construction of lines
payer.selectAll(“line”)
.data(function(d){return d.values})
.enter()
.append(‘line’)
.attr(“class”, “line”)
.attr(‘x1’, function(d) { return x(d.prev_x); })
.attr(‘y1’, function(d) { return y(d.prev_y); })
.attr(‘x2’, function(d) { return x(d.date); })
.attr(‘y2’, function(d) { return y(d.percent_change); })
.style(“stroke”, function(d) { if(d.prev_y>d.percent_change){return ‘#ffcccc’} else{return ‘#adebad’} })
.style(“stroke-width”, function(d) {return 100*Math.abs(d.percent_change)});
Проблема, с которой я столкнулся сейчас, заключается в том, что мне нужно применить кривую к линиям, что следует сделать с помощью функции interpolate () (D3 v3).Я смог сделать это до того, как применил переменную ширину и цвет пути к каждому сегменту линии, используя следующий код:
// Line deceleration
var line = d3.svg.line()
.x(function(d) { return x(d.date); })
.y(function(d) { return y(d.percent_change); })
.interpolate(“monotone”);
// Construction of Line
payer.append(“path”)
.attr(“class”, “line”)
.attr(“d”, function(d) { return line(d.values); })
.style(“stroke”, function(d) { return “#a6a6a6”; });
Однако теперь, когда я включил возможность манипулировать шириной и цветом линиииспользуя описанный код, я не вижу применяемой функции изгиба линии.Как я могу сделать так, чтобы у меня были кривые линии, сохраняя возможность изменять атрибуты каждого сегмента линии?
Текущая реализация:
// Line deceleration
var line = d3.svg.line()
.x(function(d) { return x(d.date); })
.y(function(d) { return y(d.percent_change); })
.interpolate(“monotone”); // Not being applied
// Construction of lines
payer.selectAll(“line”)
.data(function(d){return d.values})
.enter()
.append(‘line’)
.attr(“class”, “line”)
.attr(‘x1’, function(d) { return x(d.prev_x); })
.attr(‘y1’, function(d) { return y(d.prev_y); })
.attr(‘x2’, function(d) { return x(d.date); })
.attr(‘y2’, function(d) { return y(d.percent_change); })
.style(“stroke”, function(d) { if(d.prev_y>d.percent_change){return ‘#ffcccc’} else{return ‘#adebad’} })
.style(“stroke-width”, function(d) {return 100*Math.abs(d.percent_change)});
Спасибо!