javascript - D3.js 可以使用“空白”分隔值获取数据吗?
问题描述
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 并通过上述方式获取数据?
解决方案
尽管逗号 (CSV) 和制表符 (TSV) 是迄今为止最常见的分隔符,但您可以在d3.dsv
其中设置不同的分隔符(代表分隔符分隔值)。
首先,设置分隔符:
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>
由于这是一个堆栈溢出片段,我不能使用真实文件,因此模板文字。对于一个真实的文件(例如,一个txt文件),只需使用d3.dsv
空格作为分隔符,如下所示:
d3.dsv(" ", "foo.txt").then((data) => {
//code here
});
推荐阅读
- python - 如何在 PyCharm 的 Python 控制台中关闭“特殊变量”窗口?
- python - 使用 pandas 导出数据
- ios - 在设备上并行运行 XC UI 测试
- r - 计算距离矩阵(非欧几里得)而不使用 for 循环
- php - 家谱树的php递归函数
- android - 片段内部的底部工作表对话框
- ios - 我们如何在 IOS swift 4 中编辑 PDFPage 文本?
- python - 获取 DEM 栅格文件的垂直 (z) 分辨率(使用 gdal 和 python)?
- python - 如何使用python创建HTML文件的json
- visual-studio-code - 如何从 Visual Studio 代码中的悬停中过滤掉自定义 JSDoc 标记?