如何使用d3.js将CSV文件加载到变量并提取指定列值到数组
针对你提出的两个D3.js处理CSV的问题,我整理了详细的解答和示例:
D3.js处理CSV常见问题解答
问题1:如何将CSV文件加载到变量中供d3.js使用?
D3.js提供了两种便捷的方式来处理CSV加载,根据你的数据形式选择:
- 加载外部CSV文件:如果你的CSV是独立文件(本地或线上),可以用异步的
d3.csv()方法,通过回调函数获取并存储数据:
d3.csv("your-data.csv", function(error, data) { if (error) throw error; // 处理加载失败的情况 // 这里的data就是存储了CSV数据的变量,是一个对象数组 console.log("加载完成的CSV数据:", data); });
- 解析字符串型CSV:如果CSV内容是以字符串形式存在的(比如测试用的示例数据),直接用
d3.csv.parse()解析成对象数组即可:
var csvString= "Address,longitude,latitude,geometry\n"+ "1,2,3,4\n5,6,7,8\n2,3,4,5\n6,7,8,9"; var parsedData = d3.csv.parse(csvString); // parsedData就是存储解析后数据的变量 console.log("解析后的CSV数据:", parsedData);
问题2:将CSV中特定列的所有值写入数组
当CSV数据已经加载到变量中后,用JavaScript的map()方法就能快速提取指定列的所有值到新数组。下面是完整的可运行示例,运行后tmpArr就会包含Address列的全部值:
var csvString= "Address,longitude,latitude,geometry\n"+ "1,2,3,4\n5,6,7,8\n2,3,4,5\n6,7,8,9"; var parsedData = d3.csv.parse(csvString); // 遍历数据数组,提取每一项的Address属性 var tmpArr = parsedData.map(function(d){return d.Address;}); console.log("Address列的所有值:", tmpArr); // 输出 ["1", "5", "2", "6"]
必要准备
要运行这些代码,记得在你的HTML文件中引入D3.js v3版本的脚本:
<script src="https://d3js.org/d3.v3.min.js"></script>
内容的提问来源于stack exchange,提问作者Black




