我使用的CSV数据看起来像这样
,,Name,First names,s,r,Nat,born,starting point,starting date,arrival date,days,km,Assist,Support,Style,note,arrival date 2
1,1,KAGGE,Erling,,,Nor,1/15/1963,Berkner Island,11/18/1992,1/7/1993,50,appr. 1300,n,n,solo,first solo unassisted,
2,2,ARNESEN,Liv,f,,Nor,6/1/1953,Hercules Inlet,11/4/1994,12/24/1994,50,1130,n,n,solo,first woman unassisted,
我正在使用此CSV创建“启动点”的下拉菜单,这会过滤与“起点”相关联的所有“名称”
我想创建一个额外的数据集,允许我为每个'起始点'添加一些额外的细节,例如'x',如下所示:(我想用它来创建一些独特的svg行,每个'起点'点')
var newdata = [
{'starting point': 'Berkner Island', 'x': '1'},
{'starting point': 'Hercules Inlet', 'x': '2'},
{'starting point': 'Ronne Ice Shelf','x': '3'}
];
我正在过滤这样的数据
var filter = data.filter(function(d) {
return ("Berkner Island" == d['starting point'])
});
updateCSV(filter); // CSV data function
updateNewdata(filter); // Newdata function
加载时,仅过滤CSV数据。第二个数据集'newdata'加载所有没有应用过滤器的条目。
https://plnkr.co/edit/TgZxbaPdyERWeaG5i3HX?p=info
我的问题是,是否可以使用第二个数据集,并按共享值过滤两个不同的数据集?
更新
我设法解决了,是的,这是可能的。我不明白函数中的回调可能有一个唯一的名称,而不仅仅是'数据'。一旦我这样做并为我的每个数据集创建了两个不同的过滤器,它就可以工作了。
function updateCSV(CSVdata) {
...
.data(CSVdata)
};
function updateNewdata(newdata) {
...
.data(newdata)
};
// FILTER
var filtera = CSVdata.filter(function(d) {
return ("Berkner Island" == d['starting point'])
});
var filterb = newdata.filter(function(d) {
return ("Berkner Island" == d['starting point'])
});
updateCSV(filtera);
updateNewdata(filterb);
答案 0 :(得分:0)
我认为问题出在这里。您实际上并没有使用传入的数据。
// should this say 'newdata' not 'data'?
function updateNewdata(data) {
var position = canvas
.selectAll(".position")
.data(newdata)