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