Javascript 用js加载local.csv并用d3.js处理
我坚持做下面的事情。 我没有正在运行的本地http服务,因此我希望以其他方式处理文件加载 首先,我创建了以下函数,正如一些参考文献中所建议的那样Javascript 用js加载local.csv并用d3.js处理,javascript,html,d3.js,Javascript,Html,D3.js,我坚持做下面的事情。 我没有正在运行的本地http服务,因此我希望以其他方式处理文件加载 首先,我创建了以下函数,正如一些参考文献中所建议的那样 var fileArray = []; function readSingleFile(evt) { //Retrieve the first (and only!) File from the FileList object var f = evt.target.files; window.array = []
var fileArray = [];
function readSingleFile(evt) {
//Retrieve the first (and only!) File from the FileList object
var f = evt.target.files;
window.array = []
if (f) {
var r = new FileReader();
r.onload = function(e) {
var contents = e.target.result;
window.array.push(contents);
fileArray.push({name:f.name, contents: contents});
}
r.readAsText(f);
console.log(fileArray);
} else {
alert("Failed to load file");
}
}
document.getElementById('fileinput').addEventListener('change', readSingleFile, false);
然后我尝试在d3.csv函数中调用fileArray。但这就是我坚持的地方——控制台日志只显示了一个空数组
var dataset = []
d3.csv(fileArray, function(data) {
dataset = data.map(function(d) { return [ d["TEXT"], +d["HOURS"], +d["MONTH_DIGIT"] ]; });
console.log(dataset)
});
.csv文件具有以下结构
"TEXT","HOURS","MONTH_DIGIT"
"Adjustments work",849.45,"01"
如何准确地调用该文件以使用d3.js?如果您想“获取文件及其内容并使用它”,可以在回调并应用您想要对内容所做的更改后,在d3.csv()
方法中加载该文件
d3.csv('/path/to/myfile.csv, function(data) {
// Modify the files data
...
// Do something with d3.js
});
对于JSON:
var data = JSON.parse(JavascriptStringVariableThatContainsJSON);
对于CSV:
var data = d3.csv.parseRows(JavascriptStringVariableThatContainsMyCSVdata);
//然后将数据添加到图形中并调用enter,如:
var dataEnter = svg.selectAll("rect").data(data).enter();
您是否已尝试将URL传递到
d3.csv()
?这将是我最后一次尝试。我想获取文件及其内容并使用它。但是您不能在d3.csv()中处理文件的内容吗?
?没有什么可以阻止您在cdv()方法中执行非d3.js逻辑。请您进一步解释一下您的方法好吗?如果我运行http服务,可能会出现重复的情况,而我目前还没有。“XMLHttpRequest无法加载文件:。跨源请求仅支持HTTP。”我甚至想过启动python simplehttp服务器,但不在后台使用任何类型的HTTP就不能在本地处理文件吗?是的,我尝试过使用相对路径,也尝试过直接在.html文件所在的目录中使用。这里也有同样的问题。我还尝试过通过file://访问本地文件。它失败并出现错误:“跨源请求仅支持协议方案:http、数据、chrome、chrome扩展、https。”。我不想更新浏览器设置以允许跨源请求。最简单的方法是通过http访问本地文件。简单但不安全的方法是使用命令和arg:C:\PathTo\Chrome.exe启动Chrome”--允许从Windows文件访问文件,并打开-a“Google Chrome”-n--args--允许从macOS文件访问文件。