我使用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