2014-09-10 69 views
2

说我有下面的网络路径/图表jsFiddleD3线/路径/标记位置

我有固定我的泡沫,这是10和Itell的半径在那里把箭头头部就行 - .attr("refX", 27) .attr("refY", 5)

说我有不同的气泡尺寸,如果气泡尺寸超过10,显然它会隐藏我的箭头。是否有人可以明确地(最好用一个改变的例子)解释我怎样才能有效地检查气泡的大小,改变箭头的位置或缩短线/路径/连接器的长度,并将箭头放在线/路径/连接器?

感谢您的时间和帮助

回答

1

嘿,我已经更新了一些代码,请检查您捣鼓出

FIDDLE

d3.select("#arrow").attr("viewBox", "0 0 10 10") 
          .attr("refX", 27) 
          .attr("refX", function (d) { console.log(d) 
          $('circle').each(function(){ 
          if($(this).attr('r')>5) 
          { 
          return d3.select(this).attr("refY",5); 
          } 
          else 
          { 
          //return some value 
          } 
          }); 

                 }) 
          .attr("refY", 5) 
          .attr("markerUnits", "strokeWidth") 
          .attr("markerWidth", 8) 
          .attr("markerHeight", 6) 
          .attr("orient", "auto") 
          .style("stroke", "#ccc") 
          .append("svg:path") 
          .attr("d", "M 0 0 L 10 5 L 0 10 z"); 
+0

谢谢您的回答。我明白你要在这里做什么,但由于某些原因,“refX”函数中的'd'未定义。另外,你认为将这两个函数(创建箭头和你提出的箭头)混合在一起会更好吗?所以它会在一个函数中完成 - 创建并分配refX?如果是的话,这是可能的,还是我需要先创建它,然后像你建议的那样循环它? – 2014-09-11 06:34:20

+0

你可以用任何方式做。 d是未定义的,因为您没有在函数中携带数据。这是可能的方式来做到这一点,据我探索 – divakar 2014-09-11 09:07:55

+1

是的,我得到那些未定义,我的问题应该是为什么它没有被带入功能?我很抱歉。 – 2014-09-11 10:49:08