gpt4 book ai didi

d3.js - 访问连接中的上一个数据

转载 作者:行者123 更新时间:2023-12-04 21:18:46 26 4
gpt4 key购买 nike

我正在尝试学习 D3.js 的概念。我意识到我可能想将当前元素与前一个元素相关联。让我们假设我想创建一个折线图并且我正在逐点绘制。我可能会创建这样的东西:

var data = [200, 300, 250];

var svg = d3.select('body').append('svg');
var lines = svg.selectAll('line').data(data);

lines.enter()
.append('line')
.attr( {
'stroke-width': 2,
stroke: '#000',
x1: 0, y1: 0,
x2: function(d, i) { return i * 50 + 50 },
y2: function(d) { return d - 180; }
});

( Codepen )

但是请注意,我的 x1y1值为零。我希望这些值来自先前的数据。我将如何访问先前的数据(如果没有,则假设为 0,0)?

注:我意识到绘制折线图的正确方法是创建一条路径并使用 d3.svg.line生成器函数。我不是要在这里解决问题。我试图理解核心概念。

最佳答案

我想出了一种方法。递减当前数据的索引:

var data = [200, 300, 250];

var svg = d3.select('body').append('svg');
var lines = svg.selectAll('line').data(data);

function x(d, i) { return i * 50 + 50; }
function y(d) { return d - 180; }
function previous(func, seed) {
return function(d, i) {
return i > 0 ? func(data[i-1], i-1) : (seed || 0);
}
}

lines.enter()
.append('line')
.attr( {
'stroke-width': 2,
stroke: '#000',
x1: previous(x),
y1: previous(y),
x2: x,
y2: y
});

关于d3.js - 访问连接中的上一个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16692641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com