Javascript 使用d3.dsv.parseRows读取格式化数据

Javascript 使用d3.dsv.parseRows读取格式化数据,javascript,d3.js,formatting,Javascript,D3.js,Formatting,我开始学习javascript和d3.js版本3.3.3。我需要从既不是csv也不是tsv格式的文件中读取数据。我可能会使用,但我有点被它卡住了-我真的很感谢一些帮助开始,一个例子将是伟大的 数据格式为ASCII,两列数字由未知数量的空白字符或空格分隔。注释字符为 我需要将数据放在一个数字数组中,这样我就可以继续进行一些漂亮的d3绘图: [ [1.0,10.0], [2.0,20.0], [3.0,30.0], [5.0,50.0] ] 听起来你得写你自己的请求,我已经开始写了一个,下面有几个

我开始学习javascript和d3.js版本3.3.3。我需要从既不是csv也不是tsv格式的文件中读取数据。我可能会使用,但我有点被它卡住了-我真的很感谢一些帮助开始,一个例子将是伟大的

数据格式为ASCII,两列数字由未知数量的空白字符或空格分隔。注释字符为

我需要将数据放在一个数字数组中,这样我就可以继续进行一些漂亮的d3绘图:

[ [1.0,10.0], [2.0,20.0], [3.0,30.0], [5.0,50.0] ]

听起来你得写你自己的请求,我已经开始写了一个,下面有几个注释,不过你需要完成它

var dsvFile = new XMLHttpRequest();
    dsvFile.open("GET", "dsv.txt", true);

var req = new XMLHttpRequest();
    req.onreadystatechange = function () {
      if (req.readyState == 4) {
        if (req.status === 200 || 
            req.status === 0) {

            var data = req.responseText;
            cleanData(data)
          }
        }
      };

    req.open('GET', "dsv.txt", true);
    req.send(null);

    var cleanData = function(data) {

      var clean = [];
      var lines = data.split("\n");

      for (var i = 0; i < lines.length; i++) {
        var comment = /^#/
        var whiteSpace = /^\s+/
        var OK = comment.exec(lines[i]) // check for comment lines
        var white = whiteSpace.exec(lines[i]) // check white whitespace at begining of line
        if(!OK) // if no comments then
          { 
            if(white) // if whitespace at begining of line remove 
            {
              var str = lines[i].replace(whiteSpace, '')
            } 
            else 
            {
              var str = lines[i]
            }
          clean.push(str)
          }
      };

      console.log(clean)

    };

要处理具有多个空间和可能更复杂模式的数据文件, 可以与正则表达式组合,然后


注意:由于CORS,URL仅适用于某些网页。

在这种情况下,通常更容易使用脚本将数据预处理为JSON,然后您可以在D3中毫无问题地读取。不幸的是,预处理数据文件不是我的事,它们数量庞大,并且来自第三方来源。
var dsvFile = new XMLHttpRequest();
    dsvFile.open("GET", "dsv.txt", true);

var req = new XMLHttpRequest();
    req.onreadystatechange = function () {
      if (req.readyState == 4) {
        if (req.status === 200 || 
            req.status === 0) {

            var data = req.responseText;
            cleanData(data)
          }
        }
      };

    req.open('GET', "dsv.txt", true);
    req.send(null);

    var cleanData = function(data) {

      var clean = [];
      var lines = data.split("\n");

      for (var i = 0; i < lines.length; i++) {
        var comment = /^#/
        var whiteSpace = /^\s+/
        var OK = comment.exec(lines[i]) // check for comment lines
        var white = whiteSpace.exec(lines[i]) // check white whitespace at begining of line
        if(!OK) // if no comments then
          { 
            if(white) // if whitespace at begining of line remove 
            {
              var str = lines[i].replace(whiteSpace, '')
            } 
            else 
            {
              var str = lines[i]
            }
          clean.push(str)
          }
      };

      console.log(clean)

    };
var a = [];
d3.text("http://cdsarc.u-strasbg.fr/ftp/J/AJ/159/187/table3.dat")
     .then(function(d){a = d3.csvParseRows(d.replace(/ +/g, ","))})