使用D3在两个节点之间的两条平行线

时间:2015-03-02 17:33:54

标签: javascript d3.js visualization data-visualization graph-visualization

我正在尝试对连接到其周围节点的中心节点进行可视化。目前,中心节点和每个其他节点之间有一条线。我想把它改成两条不同宽度和颜色的平行线(一条显示有关呼叫的信息,另一条显示有关文本的信息)。 重要的是两条线完全相邻,两条线之间没有空间,没有重叠

编辑:来自mdml的回答和LarsKotthoff的评论对我有所帮助。但是,我仍然面临一些问题,如评论所示:偏移似乎将两条线推向更大的方向(见imgur.com/Fwri75T)。我真的无法理解。我在这里更新了代码。完整代码可在https://www.dropbox.com/s/xykoln14euewm9z/Network%20View%20v2.zip?dl=0

找到
 function total_width(d)  {
 return (d.inc_calls + d.out_calls + d.inc_texts + d.out_texts) / max_interactions * line_width_factor; 
 }

 var line_diff   = 1;

 function line_perpendicular_shift(d, direction) {
    theta = getAngle(d);
    theta_perpendicular = theta + (Math.PI / 2)*direction;


    width = total_width(d) + line_diff

    // Both lines are pushed 1/4, moving the center by 1/2, causing the two lines to connect exactly at the middle.
    delta_x = width / 4 * Math.cos(theta_perpendicular) 
    delta_y = width / 4 * Math.sin(theta_perpendicular)

    return [delta_x, delta_y]

 }

0 个答案:

没有答案