提问人:Hack-R 提问时间:4/7/2017 最后编辑:Hack-R 更新时间:4/7/2017 访问量:1488
限制 d3.csv 或 d3.text 读取的行数
Limit number of lines read by d3.csv or d3.text
问:
当 Web 应用的用户上传 CSV 时,我想在屏幕上显示上传数据的示例。它们可以上传 2 到 2000 万行,因此我想将 d3 读取和显示(样式)的数量限制为 100 行。
这可能吗?
文档没有让我明白答案。我看到它说
可以指定可选的行转换函数来映射和过滤 将对象行为更具体的表示形式;
但是我不太了解这些行转换函数或其他过滤器,以及它们是否只能在读取文件后应用,或者它们是否可以用于限制正在读取的行。
答:
0赞
Gerardo Furtado
4/7/2017
#1
在行(或访问器)函数中,使用索引(第二个参数)来限制行数:
如果指定了行转换函数,则为每一行调用指定的函数,并传递一个表示当前行 (d) 的对象、第一个非标题行从零开始的索引 (i) 以及列名数组。(强调我的)
例如,在以下示例中,我将行数限制为 5,即使 CSV 有 10 行(我正在使用元素来模拟 CSV,因为我无法使用 Stack 代码段上传真正的 CSV):<pre>
var data = d3.csvParse(d3.select("#csv").text(), row);
function row(d, i) {
if (i < 5) return d;
}
console.log("data length is " + data.length);
console.log("data is " + JSON.stringify(data));
pre {
display: none;
}
<script src="https://d3js.org/d3.v4.min.js"></script>
<pre id="csv">foo,bar
12,23
13,22
43,66
3,4
66,55
43,48
32,11
11,11
21,23
78,17</pre>
请记住,如果 CSV 实际上有 2000 万行,正如您所说,您仍然需要等到所有文件都下载完毕。row 函数仅限制解析 CSV 时创建的数据数组:当您到达某一行时,它不会神奇地停止下载/解析过程。
评论