gpt4 book ai didi

javascript - 在 d3 中的路径中引入间隙

转载 作者:行者123 更新时间:2023-12-03 05:21:35 26 4
gpt4 key购买 nike

我试图通过从文件中读取数据来使用 d3js 绘制路径。但是,其中也可能存在 NaN 值。因此,我需要在图表中的这些点上留出间隙。假设有 5 个点 1,2,3,4,5,我有 1,2,4 和 5 的值,但没有 3。所以,应该有一条从 1 到 2 的路径和一条从 4 到 5 的路径。

我遇到了 d3.line 的定义访问器,它对行元素执行此操作。关于如何用路径实现相同的任何想法。

提前致谢

PS:我正在尝试这样的事情:

var selection = d3.select(this)
.selectAll('.my-series')
.data(d);
selection.enter()
.append('path');

最佳答案

仍然不确定我是否理解这个问题,但我在下面编写了一个代码片段,演示如何使用 d3.linedefine 访问器。在此代码中,如果 d.xd.y 包含 falsy值,d3 将“分解”路径线段:

<!DOCTYPE html>
<html>

<head>
<script data-require="d3@4.0.0" data-semver="4.0.0" src="https://d3js.org/d3.v4.min.js"></script>
</head>

<body>
<script>

var svg = d3.select('body')
.append('svg')
.attr('width', 200)
.attr('height', 200);

var x = d3.scaleLinear()
.range([0,200])
.domain([1,5]);

var y = d3.scaleLinear()
.range([0,200])
.domain([0, 10]);

var data = [
{
x: 1,
y: Math.random() * 10
},{
x: 2,
y: Math.random() * 10
},{
x: false,
y: false
},{
x: 4,
y: Math.random() * 10
},{
x: 5,
y: Math.random() * 10
}
];

var line = d3.line()
.x(function(d){
return x(d.x);
})
.y(function(d){
return y(d.y);
})
.defined(function(d){
return d.y && d.x;
});

svg.append('path')
.style('stroke', 'steelblue')
.style('stroke-width', 2)
.style('fill', 'none')
.attr('d', line(data));

</script>
</body>
</html>

关于javascript - 在 d3 中的路径中引入间隙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41355981/

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