我有以下地图和过滤功能来获取我的 csv 文件数据以它们的列名作为键.
d3.csv("Sales Export Friendly 3-19-17.csv", function(data) {
sales = data
.map(sale => [
sale["Unit Booked"],
new Date(sale["Booking Date"]).getMonth() + 1,
new Date(sale["Checkin"]).getMonth() + 1,
(new Date(sale["Checkout"]).valueOf() - new Date(sale["Checkin"]).valueOf())/(24*60*60*1000),
+sale["Total Stay"],
(+sale["Total Stay"]) / ((new Date(sale["Checkout"]).valueOf() - new Date(sale["Checkin"]).valueOf())/(24*60*60*1000)),
])
.filter(([unit, date, checkin, LOS, total, avgNight]) => !isNaN(total));
这适用于大多数目的,但我还没有弄清楚如何保留列名称以将它们引用为 d3 多维类型可视化(平行坐标)中的轴。我认为这可能与地图和过滤器的使用有关?
当您加载 CSV 文件时,d3.csv
创建一个方便的数组属性,称为columns
.
根据API https://github.com/d3/d3-dsv/blob/master/README.md#dsv_parse:
返回的数组还公开了一个columns
包含按输入顺序排列的列名的属性(与 Object.keys 不同,其迭代顺序是任意的)。
因此,由于您的回调参数被命名为data
,您可以简单地使用以下方法获取列的名称:
data.columns
或者将其分配给变量:
var myColumns = data.columns
这是一个带有真实 CSV 文件的演示博斯托克块 https://bl.ocks.org/mbostock/3887051:
d3.csv("https://gist.githubusercontent.com/mbostock/3887051/raw/805adad40306cedf1a513c252ddd95e7c981885a/data.csv", function(data){
console.log(data.columns);
});
<script src="https://d3js.org/d3.v4.min.js"></script>
PS:这个答案指的是D3 v4,应该是default版本的答案,除非问题中另有说明。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)