我使用D3的象徵機制,指定每一組數據的獨特象徵遇到問題設置。數據的這樣的: [[{X:1,Y:1},{X:2,Y:2},{X:3,Y:3}],[{X:1,Y:1}, {x:2,y:4},{x:3,y:9}]等]獨特的符號每個數據D3散點圖
寫出符號的代碼部分如下所示: 我爲每個點的傳染媒介。然後:
series.selectAll("g.points")
//this selects all <g> elements with class points (there aren't any yet)
.data(Object) //drill down into the nested Data
.enter()
.append("g") //create groups then move them to the data location
.attr("transform", function(d, i) {
return "translate(" + xScale(d.x) + "," + yScale(d.y) + ")";
})
.append("path")
.attr("d", function(d,i,j){
return (d3.svg.symbol().type(d3.svg.symbolTypes[j]));
}
);
或者至少這是我希望它的工作方式。麻煩的是我無法從其他函數返回函數d3.svg.symbol()。如果我試圖將該函數放在「類型」參數中,那麼數據不再被正確地限定爲知道j是什麼(系列的索引)。
對,但我不想每個數據點都有一個唯一的符號,我想爲每個系列設置一個唯一的符號。數據由多個數組組成(系列),每個數組可以有任意數量的點(x,y)。我想爲每個陣列使用不同的符號,這就是j應該給我的。我將這些數據(例如,顯示的兩個數組,因此我是0,然後是1)與系列選擇相關聯。然後我將數據對象與點選擇相關聯,所以我成爲每個數組中點的索引,並且j成爲原始數組/數據序列的索引。其實,我從別的地方複製這種語法,它的作品確定爲其它實例(着色系列例如分組條形圖在酒吧),但我不能告訴你到底爲什麼它的工作原理...
任何指導意見將不勝感激。 謝謝!
你能否澄清j的用法在你的「d」的屬性功能的第三個參數?我不明白它傳遞英寸 – 2013-03-12 23:59:00
安德魯指出,鑑於.attr( 「d」,函數(d,I,J){}),J應始終爲0使用d3.svg.symbolTypes [I]相反,因爲我引用每個數據點的(唯一)索引值。 – widged 2013-03-13 08:56:45