如何修改http://bl.ocks.org/mbostock/3884955以下的代碼以選擇特定列?根據列選擇d3數據子集
var line = d3.svg.line()
.x(function(d) { return x(d.date); })
.y(function(d) { return y(d.temperature); });
d3.tsv("data.tsv", function(error, data) {
color.domain(d3.keys(data[0]).filter(function(key) { return key !== "date"; }));
data.forEach(function(d) {
d.date = parseDate(d.date);
});
var cities = color.domain().map(function(name) {
return {
name: name,
values: data.map(function(d) {
return {date: d.date, temperature: +d[name]};
})
};
});
在以上示例中使用的數據中,有4列:3個城市的日期和3列溫度。在我的使用案例中,我有10個列:3個城市的每個城市的日期和3個變量,即(1 + [3 * 3])。我想加載整個數據集(用於工具提示),但只想繪製每個城市的變量中的一個,這些變量位於列索引#1,4和7中。我該怎麼做? (請參閱下面的粗略語法)。
var cities = color.domain().map(function(name) {
return {
name: name,
values: data.map(function(d) {
return {date: d.date, maxTemperature: *+d[arrays in column index 1, 4 and 7]*};
})
values2: data.map(function(d) {
return {date: d.date, minTemperature: *+d[arrays in column index 2, 5 and 8]*};
})
values3: data.map(function(d) {
return {date: d.date, avgTemperature: *+d[arrays in column index 3, 8 and 9]*};
})
};
});
我就開始用道歉爲我的不足與JavaScript的深度,但我不能在上面的代碼是如何解決這個問題清楚了。是使用「first:」和「second:」用戶定義的名稱還是d3關鍵字?上面的代碼如何根據索引#選擇特定的列而不知道他們的名字?此外,因爲我試圖一次調用多個列,我如何用第一,第二,第四等調用v.first(例如)來替代。這種選擇性多列數據調用將是我也用於定義圖表線的y軸(請參閱編輯問題)。 – WittyID
這些名稱是用戶定義的。如果您使用這種技術,您需要知道列名,否則您可以使用['d3.tsv.parseRows()'](https://github.com/mbostock/d3/wiki/CSV#wiki-tsv_parseRows )。如果您想使用多個值來確定限制,只需將它們放入數組中並使用'd3.min'(或max)。 –