2015-10-26 32 views
1

我使用沃罗诺伊弧图示例,http://bl.ocks.org/mbostock/7608400 我可以成功地想象我的进口与出口贸易数据集的控制属性。D3维诺弧地图 - 在.arcs

但是我无法更改在特定位置生成的单个路径的属性。 我使用.airport-arcs来制作这些路径,并且我希望有各行的变量“stroke-width”或“color”。 我曾尝试几种选择,如:

var color = d3.scale.category20(); 
...  
var td = svg.selectAll(".airport-arcs") 
td.style("stroke", function(d) { return color(d.count); }); 
td.attr("stroke-width", function(d) { return Math.log(d.count); }); 
出现由相同的量来改变所有的笔划宽度,而颜色是在给定的本地产生的所有链路与不同的(但地点之间不同)

。 有关如何更改各个路径的属性的任何建议?

回答

0

有在你的代码的两个错误:

  1. 你没有选择你正在寻找的元素。选择类.airport-arcs将返回包含所有路径的组。要单独操作路径,您需要像这样选择:

    var td = svg.selectAll(".airport-arcs path") 
    
  2. 您正在访问错误的属性。 .count不是绑定到路径而是机场对象的数据的直接属性。 d.source.count是你在找什么。

你的更正后的代码应该是这样的:

var color = d3.scale.category20(); 

var td = svg.selectAll(".airport-arcs path") 
td.style("stroke", function(d) { return color(d.source.count); }); 
td.attr("stroke-width", function(d) { return Math.log(d.source.count); }); 
+0

你好,谢谢你的建议,是的,我忘了提,我是新来D3和JS。我已经在上面的示例文件中尝试了您的建议,但它产生了与以前相同的结果。只有“每组的颜色”被改变,但不是个人路径..... – Patrizio

+0

@Patrizio也许,我不明白。 “count”是每个机场的价值*。因此,'color(d.source.count)'将始终为任何机场起飞的所有航班返回相同的颜色。听起来像你正在使用错误的标准来确定颜色。 – altocumulus

+0

计数是每个目的地每个机场的价值。具有不同目的地的同一机场可能具有不同的计数值。因此,我期望基于[count]我可以为不同的路径有不同的属性。 – Patrizio