我有以下地图和过滤功能,以便将我们的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多维类型的viz(并行坐标)中的轴。我认为这可能与地图和过滤器的使用有关吗?
答案 0 :(得分:1)
加载CSV文件时,d3.csv
会创建一个名为columns
的便捷数组属性。
根据API:
返回的数组还会以输入顺序公开包含列名的
columns
属性(与Object.keys相反,其迭代顺序是任意的)。
因此,由于您的回调参数名为data
,因此您可以获取列'简单地使用名称:
data.columns
或将其分配给变量:
var myColumns = data.columns
以下是来自此Bostock's bl.ocks的真实CSV文件的演示:
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>
&#13;
PS:这个答案是指D3 v4,除非问题另有说明,否则应该是答案的默认版本。