【问题标题】:Parsing specific columns/data from multiple CSV file解析来自多个 CSV 文件的特定列/数据
【发布时间】:2016-12-24 20:36:32
【问题描述】:

所以,就在最近,我一直在使用 D3.js 来解析 CSV 文件中的数据。在阅读 Scott Murray 的“交互式数据可视化”(很棒的书,内容丰富)时,它解释了如何从 CSV 表格中选择所有数据。

解析CSV的代码如下:

d3.text("three.csv", function(data) {
            var parsedCSV = d3.csv.parseRows(data);
            var container = d3.select("#thirdCSV")  
                .append("div")

                .append("table")
                    .attr("id", "tableThree")

                .selectAll("tr")
                    .data(parsedCSV).enter()
                    .append("tr")

                .selectAll("td")
                    .data(function(d) { return d; }).enter()
                    .append("td")
                    .attr("id","three")
                    .text(function(d) { return d; });

    });

对于我的项目,我采用 7 个不同的 CSV 文件并将其以 HTML 格式放置。

7x 以上的代码好像没必要写,有没有其他解析多个 CSV 文件的方法?如果是这样,是否还有一种方法可以仅解析特定列,例如列 D-F?这是其中一个文件的设置方式的图像(其余 CSV 文件的格式相同。

【问题讨论】:

  • 将代码包装在一个函数中,在该函数中将非重复部分作为参数传递
  • 那么,您有 7 个不同的 CSV?为什么不创建一个包含这 8 行的 CSV?
  • @GerardoFurtado 正在考虑这样做,但每个 csv 都有自己的角色,例如一个用于毛利润,一个用于邮寄成本等。如果在一个表中,我如何更好地控制每张表csv?
  • 只需将每个表绑定到您想要的特定数据集(data 的子集)。
  • @dandavis 所以我开始使用带有函数错误、数据和随机错误代码的参数出现在 d3.v3.min.js 库中“未捕获的 TypeError:n.charCodeAt 不是函数”。当我使用上面的代码时,库很好......

标签: javascript csv d3.js


【解决方案1】:

在 D3 d3.csv() 中有一个特定的 function 用于读取 csv 文件。您应该使用它而不是d3.text(),因为它使事情变得更容易,因为您不需要另外使用d3.csv.parseRows()。以this block 为例。

您可以使用d3.queue() function 异步加载多个数据文件。在执行下一步之前,它会等待所有文件加载完毕。你应该这样使用它:

var q = d3.queue()
    .defer(d3.csv, "first.csv")
    .defer(d3.csv, "second.csv")
    .defer(d3.csv, "third.csv")
    ....
    .awaitAll(function(error, results) {
      if (error) throw error;
      console.log(results);
      draw(results)
    });

我还想指出,D3.queue() 函数不包含在 D3 v3 默认捆绑包中,因此您必须单独加载它:

<script src="https://d3js.org/d3-queue.v3.min.js"></script>

【讨论】:

    猜你喜欢
    • 2019-11-08
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 2019-03-26
    • 2019-09-27
    • 1970-01-01
    相关资源
    最近更新 更多