Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 在D3中加载分隔符分隔的值_File_D3.js - Fatal编程技术网

File 在D3中加载分隔符分隔的值

File 在D3中加载分隔符分隔的值,file,d3.js,File,D3.js,我试图使用通用的D3.dsvFormat()函数在D3中加载管道分隔值文件。虽然我没有得到一个错误,但没有发生任何事情,我认为这是因为没有执行回调函数 我确实检查了这里的文档,但没有发现有什么帮助: 我的语法有问题吗 var psv = d3.dsvFormat("|"); psv.parse("my_file.txt", function(error, data) { Do a bunch of stuff with the data.... console.log(data)

我试图使用通用的D3.dsvFormat()函数在D3中加载管道分隔值文件。虽然我没有得到一个错误,但没有发生任何事情,我认为这是因为没有执行回调函数

我确实检查了这里的文档,但没有发现有什么帮助:

我的语法有问题吗

var psv = d3.dsvFormat("|");
psv.parse("my_file.txt", function(error, data) {
    Do a bunch of stuff with the data....
    console.log(data);  //nothing happens here
});

psv.parse
想要文本,您正在传递文本-只是其中没有任何管道:“my_file.txt”。由于这是一行文本,而第一行文本转换为列名,因此您将无法获得任何数据

您的问题是,
psv.parse
不会像d3.csv或d3.tsv那样为您获取文件(而psv.parse()的行为类似于d3.csvParse()或d3.tsvParse()。幸运的是,这并不难解决

如果我们查看d3.csv的API文档,我们可以为任何分隔文件重新创建相同的功能。使用d3.csv

如果指定了回调,则发送GET请求,使其 相当于:

d3.request(url)
    .mimeType("text/csv")
    .response(function(xhr) { return d3.csvParse(xhr.responseText, row); })
    .get(callback);
()

我们只需对管道分隔文件进行模拟:

var psv = d3.dsvFormat("|");

d3.request("my_file.txt")
  .mimeType("text/plain")
  .response(function(data) { return psv.parse(data.response) })
  .get(function(data) {
     console.log(data);
  });
它比普通的d3.csv()或d3.tsv()要详细一点,但是使用get方法中的回调函数可以获得相同的结果

您也可以在response方法中使用data.responseText,但我不确定区别是什么,在我的快速测试中,两者看起来完全相同

您可能还注意到,我没有在响应方法中指定行函数,这是一个可选函数,允许“将行对象转换为更具体的表示”,例如:返回数字而不是字符串)


最后一点注意:

对于原始代码,
psv.parse(“text”)
返回数据,此方法不使用回调函数。以下代码段演示了如何解析直管分隔的文本:

var psv=d3.dsvFormat(“|”);
var data=psv.parse(“a | b\n1 | 2\n4 | 3”)
控制台日志(数据)