javascript - D3.js 可以使用 "whitespace"分隔值获取数据吗?

标签 javascript d3.js

D3.js 有 tsvcsv 提取。假设我们有数据:

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
});

关于javascript - D3.js 可以使用 "whitespace"分隔值获取数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60777292/

相关文章:

javascript - toDateString 有什么问题

javascript - 如何在调用时从 spy.on(object, 'funcName') 返回虚假数据?

Javascript 字符串操作

javascript - 在 D3 图上隐藏一条线

javascript - 如何使用 D3.js 包裹长文本标签?

javascript - 公理 : Request header field Access-Control-Allow-Methods is not allowed by Access-Control-Allow-Headers in preflight respones

javascript - 用ajax保存jQuery点击?

javascript - 在 Nashorn 中运行 jsdom

javascript - 如何使用 d3.js 更新 svg 路径

javascript - D3.js:从数据数组开始绘制简单的折线图