D3进阶--读取csv文件

在 D3.js 中提供了 d3.csv() 函数来读取 CSV 文件。函数 API 可参见: https://github.com/mbostock/d3/wiki/CSV 

d3.csv("table.csv",function(error,csvdata){
        
   if(error){
       console.log(error);
   }
   console.log(csvdata);
            
});

变量中 csvdata 是保存了一个数组,数组中的每个元素都一个对象,每个对象里都有 age 、name、sex 三个成员变量

for( var i=0; i<csvdata.length; i++ ){
   var name = csvdata[i].name;
   var sex = csvdata[i].sex;
   var age = csvdata[i].age;
   console.log( "name: " + name + "\n" +
            "sex: " + sex + "\n" +
            "age: " + age  );
}

将读入的数据转换为字符串

d3.csv("table.csv",function(error,csvdata){        
     var str = d3.csv.format( csvdata );            
     console.log(str.length);
     console.log(str);    
});

利用format函数,str 中保存的就是转换后的字符串

与csv比较相似的还有TSV文件,它是以制表分割符来分隔的

读取方法如下:

d3.tsv("table.tsv",function(error,tsvdata){
    console.log(tsvdata);
    var str = d3.tsv.format( tsvdata );            
    console.log(str.length);
    console.log(str);    
});

其实,在D3中读取csv和TSV都是通过d3调用dsv函数来实现的

例如读取以分号分割的文件,代码如下(注意:dsv可作函数):

var dsv = d3.dsv(";", "text/plain");
dsv("table.dsv",function(error,dsvdata){
    if(error)
        console.log(error);
    console.log(dsvdata);
});

 

 在 d3.dsv 的第二的参数中,其实可以添加编码的,形如:

var csv = d3.dsv(",", "text/csv;charset=gb2312");
var tsv = d3.dsv("    ", "text/tab-separated-values;charset=gb2312");

csv("xxx.csv",function(error,csvdata){

}

tsv("xxx.tsv",function(error,tsvdata){

}

从而可以避免读取文件时,出现乱码

posted @ 2017-12-23 13:50  Hyacinth-Yuan  阅读(2123)  评论(0编辑  收藏  举报