D3.js具有tsv
和csv
回迁。假设我们有数据:
x y
1 3
2.2 -1.8
3 4
数据真的可以通过空白区来分隔吗?我们可以编写一个预处理器,通过空白分割文件来转换文件,例如
const data = `x y
1 3
2.2 -1.8
3 4`;
console.log(data.split("n").map(line => line.trim().split(/s+/).join("t")).join("n"));
但是,有没有一种方法可以直接使用D3.js并通过上面的方式获取数据?
您可以在d3.dsv
中设置不同的分隔符(代表分隔符分隔的值(,尽管逗号(CSV(和制表符(TSV(是迄今为止最常见的分隔符。
首先,设置分隔符:
const whiteSpaceParser = d3.dsvFormat(" ");
然后,使用parse()
方法解析文件:
const data = whiteSpaceParser.parse(file);
这是演示:
const file = `x y
1 3
2.2 -1.8
3 4`;
const whiteSpaceParser = d3.dsvFormat(" ");
const data = whiteSpaceParser.parse(file, d3.autoType);
console.log(data)
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.12.0/d3.min.js"></script>
由于这是一个Stack Overflow片段,我不能使用真实的文件,因此使用模板文字。对于一个真实的文件(例如,一个txt文件(,只需使用带有空格的d3.dsv
作为分隔符,如下所示:
d3.dsv(" ", "foo.txt").then((data) => {
//code here
});