мне нужно нарисовать график, позиции и размеры узлов, предопределенные (из внешнего источника) и не могут быть изменены. Просто нарисовать узлы, используя библиотеку, такую как D3. Трудность возникает при рисовании краев. Я понимаю, что библиотеки, такие как Dagre , имеют функциональность, чтобы выяснить макет узлов и краев и сделать график представлять. Но для меня задача заключается в использовании Dagre для работы с фиксированными положениями узел < /em> и заставьте его вычислять только пути к крае. />
Моя единственная проблема с этим заключается в том, что, похоже, нет способа передать мои фиксированные разложения , чтобы заставить их использовать их для размещения узлов, а затем сделать макет только для регенсов. const fixedPositions = {
A: { x: 300, y: 50 },
B: { x: 150, y: 150 },
C: { x: 450, y: 150 },
D: { x: 100, y: 250 }
};
// cannot do
// dagre.layout(g, fixedPositions);
< /code>
Есть ли способ достичь этого либо с Dagre, либо с какой -либо другой библиотекой? Этот вопрос задает об этом в теоретической перспективе, но я спрашиваю в более практичном смысле с использованием доступных библиотек с открытым исходным кодом или иным образом. Например, это может быть результатом, если я вручную нарисую ребра прямой линии для другого (не единственного в моем коде).>
мне нужно нарисовать график, позиции и размеры узлов, предопределенные (из внешнего источника) и не могут быть изменены. Просто нарисовать узлы, используя библиотеку, такую как D3. Трудность возникает при рисовании краев. Я понимаю, что библиотеки, такие как Dagre , имеют функциональность, чтобы выяснить макет узлов и краев и сделать график представлять. Но для меня задача заключается в использовании Dagre для работы с фиксированными положениями узел < /em> и заставьте его вычислять только пути к крае. /> [code]// Simple adj list for my graph const adjList = { "A": ["B", "C"], "B": ["D"], "C": [], "D": [] };
// Fixed positions. // This will be from an external source which CANNOT be changed. // I can't figure out to pass this to dagre's layout engine. const fixedPositions = { A: { x: 300, y: 50 }, B: { x: 150, y: 150 }, C: { x: 450, y: 150 }, D: { x: 100, y: 250 } };
const g = new dagre.graphlib.Graph(); g.setGraph({}); g.setDefaultEdgeLabel(function() { return {}; });
// Adidng nodes and edges to graph Object.keys(adjList).forEach(node => { g.setNode(node, { label: node, width: 50, height: 30 }); });
// Run the layout algorithm (this part computes the layout considering everything and can't be forced to work with my fixed positions) dagre.layout(g);
Моя единственная проблема с этим заключается в том, что, похоже, нет способа передать мои фиксированные разложения , чтобы заставить их использовать их для размещения узлов, а затем сделать макет только для регенсов. const fixedPositions = { A: { x: 300, y: 50 }, B: { x: 150, y: 150 }, C: { x: 450, y: 150 }, D: { x: 100, y: 250 } };
// cannot do // dagre.layout(g, fixedPositions); < /code> Есть ли способ достичь этого либо с Dagre, либо с какой -либо другой библиотекой? Этот вопрос задает об этом в теоретической перспективе, но я спрашиваю в более практичном смысле с использованием доступных библиотек с открытым исходным кодом или иным образом. Например, это может быть результатом, если я вручную нарисую ребра прямой линии для другого (не единственного в моем коде).>