D3.js 支持多种数据格式,这些格式涵盖了从简单的表格数据到复杂的地理数据。以下是一些常见的数据格式及其加载方法:
D3.js 数据加载方法
d3.blob(input, init)
input
: 数据源 URL。init
: 可选的初始化对象,用于设置请求头等。 返回: 返回一个 Promise,解析为 Blob 对象。示例:d3.blob("data.bin").then(blob => { console.log(blob);}).catch(error => { console.error("Error loading blob:", error);});
d3.buffer(input, init)
input
: 数据源 URL。init
: 可选的初始化对象,用于设置请求头等。 返回: 返回一个 Promise,解析为 ArrayBuffer 对象。示例:d3.buffer("data.bin").then(buffer => { console.log(buffer);}).catch(error => { console.error("Error loading buffer:", error);});
d3.csv(input, init, row)
input
: 数据源 URL。init
: 可选的初始化对象,用于设置请求头等。row
: 可选的行处理函数,用于解析每一行数据。 返回: 返回一个 Promise,解析为数组对象。示例:d3.csv("data.csv", row => { return { id: +row.id, value: +row.value };}).then(data => { console.log(data);}).catch(error => { console.error("Error loading CSV:", error);});
d3.dsv(delimiter, input, init, row)
delimiter
: 分隔符字符串。input
: 数据源 URL。init
: 可选的初始化对象,用于设置请求头等。row
: 可选的行处理函数,用于解析每一行数据。 返回: 返回一个 Promise,解析为数组对象。示例:const parser = d3.dsvFormat("|");d3.dsv("|", "data.dsv", row => { return { id: +row.id, value: +row.value };}).then(data => { console.log(data);}).catch(error => { console.error("Error loading DSV:", error);});
d3.html(input, init)
input
: 数据源 URL。init
: 可选的初始化对象,用于设置请求头等。 返回: 返回一个 Promise,解析为 DocumentFragment 对象。示例:d3.html("data.html").then(doc => { console.log(doc);}).catch(error => { console.error("Error loading HTML:", error);});
d3.image(input, init)
input
: 数据源 URL。init
: 可选的初始化对象,用于设置请求头等。 返回: 返回一个 Promise,解析为 Image 对象。示例:d3.image("data.png").then(image => { console.log(image);}).catch(error => { console.error("Error loading image:", error);});
d3.json(input, init)
input
: 数据源 URL。init
: 可选的初始化对象,用于设置请求头等。 返回: 返回一个 Promise,解析为 JSON 对象。示例:d3.json("data.json").then(data => { console.log(data);}).catch(error => { console.error("Error loading JSON:", error);});
d3.svg(input, init)
input
: 数据源 URL。init
: 可选的初始化对象,用于设置请求头等。 返回: 返回一个 Promise,解析为 DocumentFragment 对象。示例:d3.svg("data.svg").then(svg => { console.log(svg);}).catch(error => { console.error("Error loading SVG:", error);});
d3.text(input, init)
input
: 数据源 URL。init
: 可选的初始化对象,用于设置请求头等。 返回: 返回一个 Promise,解析为字符串。示例:d3.text("data.txt").then(text => { console.log(text);}).catch(error => { console.error("Error loading text:", error);});
d3.tsv(input, init, row)
input
: 数据源 URL。init
: 可选的初始化对象,用于设置请求头等。row
: 可选的行处理函数,用于解析每一行数据。 返回: 返回一个 Promise,解析为数组对象。示例:d3.tsv("data.tsv", row => { return { id: +row.id, value: +row.value };}).then(data => { console.log(data);}).catch(error => { console.error("Error loading TSV:", error);});
d3.xml(input, init)
input
: 数据源 URL。init
: 可选的初始化对象,用于设置请求头等。 返回: 返回一个 Promise,解析为 Document 对象。示例:d3.xml("data.xml").then(xml => { console.log(xml);}).catch(error => { console.error("Error loading XML:", error);});
12. Custom Formats (自定义格式)
用途: 如果你需要处理特殊格式的数据,可以使用d3.dsv
或 d3.text
并自定义解析逻辑。加载方法:d3.text("data.custom").then(data => { const parsedData = parseCustomData(data); // 自定义解析函数 console.log(parsedData);}).catch(error => { console.error("Error loading custom format:", error);});function parseCustomData(data) { // 自定义解析逻辑 return data.split("\n").map(line => line.split(","));}
总结
D3.js 支持多种数据格式,包括 JSON、CSV、TSV、XML、HTML、GeoJSON、TopoJSON、纯文本文件、二进制文件和自定义格式。通过使用 D3.js 提供的加载方法,可以轻松地将这些数据加载到你的应用程序中,并进行进一步的处理和可视化。希望这些示例能帮助你更好地理解和使用 D3.js 进行数据加载。