2016-12-09 2 views
0

РезюмеD3 Дерево Диаграмма Изогнутые линии Начальное положение

Используя пример ниже я создал базу данных приводится в виде дерева с блоками информации, а не на окружности узлов.

Interactive d3.js tree diagram

Пожалуйста, смотрите пример ниже скриншоте:

Example image of block nodes

Идея для линии, чтобы начать с, где блок заканчивается. Я предполагаю, что это что-то сделать с помощью следующей функции:

// Custom projection 
var linkProjection = d3.svg.diagonal() 
    .source(function (d) { 
     return { "y": d.source.y, "x": d.source.x }; 
    }) 
    .target(function (d) { 
     return { "y": d.target.y, "x": d.target.x }; 
    }) 
    .projection(function (d) { 
     return [d.y, d.x]; 
    }); 

// Enter any new links at the parent's previous position. 
link.enter().insert("path", "g") 
    .attr("class", "link") 
    .style("fill", "none") 
    .style("stroke", "#d1d6da") 
    .style("stroke-width", "1") 
    .attr("d", function (d) { 
     var s = { x: source.x0, y: source.y0 }; 
     var t = { x: source.x0, y: source.y0 }; 
     return linkProjection({ source: s, target: t }); 
}); 

Я попытался добавить ширина блока к координате у, но хотя она начинается с правильной позиции с чертежа заканчивается в начале блока снова.

Любые предложения?

+0

Я предполагаю, что это где-то в этом коде var s = {x: source.x0, y: source.y0}; координата x Если вы делитесь своим кодом, то он должен помочь –

ответ

0

Без лишнего кода трудно сказать, но я думаю, что это связано с системой координат. x, y указывает на центр объекта, который я думаю. Таким образом, вам придется перевести y вправо на половину длины вашего поля.

Т.е. предыдущее положение родителей (x, y) указывает на центр родителя.

+0

Хорошо, я добавил CodePen для примера. Концепция такая же, линии должны начинаться на краю круга, а не от центра. [ссылка] http://codepen.io/anon/pen/gLKVaM – Jako

Смежные вопросы