d3.csv或d3.text读取的行数限制
问题描述:
当Web应用程序的用户上载CSV时,我想在屏幕上显示上传数据的样本。他们可以上传2到2000万行,所以我想限制d3读取的数字(用于速度)和显示(用于样式),比方说100行。d3.csv或d3.text读取的行数限制
这可能吗?
documentation没有使我的答案显而易见。我看到它说
可以指定一个可选的行转换函数来映射和过滤行对象到一个更具体的表示;
但我真的不明白这些行转换函数或其他过滤器,以及它们是否只能在读取文件后应用,或者它们是否可用于限制正在读取的行。
答
在您的行(或访问)功能,使用索引(第二个参数)来限制的行数:
如果指定了一个行转换功能,对指定的函数调用对每行,传递一个表示当前行(d)的对象,索引(i)从零开始,为第一个非标题行以及列名称数组。 (重点煤矿)
例如,在下面的例子中,我限制的行数为5,即使CSV具有10行(我使用<pre>
元件来模拟CSV因为我不能上传使用堆栈段)真正的CSV:
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万行,就像你说的,你还是得等到全部文件被下载。行函数仅限制解析CSV时创建的数据数组:当您到达特定行时,它不会奇迹般地停止下载/解析过程。