Javascript 分析多个CSV文件中的特定列/数据
所以,就在最近,我一直在使用D3.js解析CSV文件中的数据。在阅读Scott Murray的“交互式数据可视化”(一本很棒的书,内容非常丰富)时,它解释了如何从CSV中的表中选择所有数据 解析CSV的代码如下所示:Javascript 分析多个CSV文件中的特定列/数据,javascript,csv,d3.js,Javascript,Csv,D3.js,所以,就在最近,我一直在使用D3.js解析CSV文件中的数据。在阅读Scott Murray的“交互式数据可视化”(一本很棒的书,内容非常丰富)时,它解释了如何从CSV中的表中选择所有数据 解析CSV的代码如下所示: d3.text("three.csv", function(data) { var parsedCSV = d3.csv.parseRows(data); var container = d3.select("#thirdCSV")
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文件的格式相同)。
在D3D3.csv()
中有一个特定的用于读取csv文件的方法。您应该使用它,而不是使用D3.text()
,因为它使事情变得更容易,因为您不需要另外使用D3.csv.parseRows()
。例如
您可以使用d3.queue()
异步加载多个数据文件。它会等待所有文件加载,然后再执行下一步。您应该这样使用它:
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>
将您的代码包装在一个函数中,在该函数中,您可以将非重复部分作为参数传递。您有7个不同的CSV?为什么不创建一个包含这8行的CSV呢?@GerardoFurtado正在考虑这样做,但每个CSV都有自己的角色,例如一个用于毛利,一个用于邮件成本等。如何更好地控制每个选项卡le如果在一个csv中?只需将每个表绑定到您想要的特定数据集(数据的子集)。@dandavis因此我开始使用带有函数错误的参数,数据和随机错误代码出现在d3.v3.min.js库“Uncaught TypeError:n.charCodeAt不是函数”。当我使用上面的代码时,该库很好。。。