[英]D3.csv not loading the csv file
出於某種原因,我無法使用d3.csv(...)函數加載任何 .csv 文件。 我所做的是使用上面的函數加載一個 csv 文件並將數據直接打印到控制台。
這就是我所做的:
我使用記事本創建了一個名為 irisData.csv 的文件。 它包括來自https://archive.ics.uci.edu/ml/datasets/Iris的 iris 數據集的一些數據
sepal_length,sepal_width,petal_length,petal_width,species 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setosa 4.6,3.1,1.5,0.2,Iris-setosa 5,3.6,1.4,0.2,Iris-setosa 5.4,3.9,1.7,0.4,Iris-setosa
我在irisTest.html 中編寫了這段代碼,將數據打印到控制台中,檢查它是否正常工作。
... d3.csv("irisData.csv", type, function(error, data){ console.log(data); }); ...
不確定這是否相關,但我還是會提出來:為了運行我的 html,我使用 Node.js 來運行服務器。 這是服務器的代碼server.html :
var http = require('http'); fs = require('fs'); http.createServer(function(req, res){ fs.readFile('./irisTest.html', function(err, data){ if(err){ res.writeHead(500, {'Content-type': 'text/plain'}); res.end('500 - Internal Error'); }else{ res.writeHead(200, {'Content-type': 'text/html'}); res.end(data); } }); }).listen(3000);
所以我期望控制台打印出一個由csv文件中的數據組成的對象。 像這樣的東西:
[
{data...}
{data...}
{data...}
...
]
然而,我得到的是我的irisTest.html代碼(它是 html 代碼本身)包裝到對象中。 我意識到我在d3.csv("irisData.csv", ...) 中放置什么而不是“irisData.cvs”作為路徑並不重要,它總是輸出我自己的代碼,如下所示。 所以我認為這可能是 csv 文件的路徑有問題,但不應該有。 所有文件都在同一個文件夾中。
[
...
{<!DOCTYPE html>: "d3.csv("irisData.csv", type, function(error, data){"}
{<!DOCTYPE html>: "console.log(data);"}
{<!DOCTYPE html>: "});}"}
...
]
有誰知道發生了什么?
正如此處的文檔中所指定的,需要匿名函數而不是type
。 我引用文檔中的示例:
d3.csv("example.csv", function(d) {
return {
year: new Date(+d.Year, 0, 1), // convert "Year" column to Date
make: d.Make,
model: d.Model,
length: +d.Length // convert "Length" column to number
};
}, function(error, rows) {
console.log(rows);
});
因此,在您的情況下,應通過以下方式讀取 csv 文件:
d3.csv("irisData.csv",function(data){
console.log(data);
},function(error, rows){
console.log(rows);
});
這是gist 中的一個工作示例,檢查控制台以查看數據對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.