# How to force line do not cross node in sfdp

**URL:** <https://forum.graphviz.org/t/how-to-force-line-do-not-cross-node-in-sfdp/2686>\
**Category:** Help\
**Created:** [January 31, 2025, 9:17am UTC](https://forum.graphviz.org/t/how-to-force-line-do-not-cross-node-in-sfdp/2686 "2025-01-31T09:17:56Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![The\_book](https://avatars.discourse-cdn.com/v4/letter/t/b2d939/32.png) [@The\_book](https://forum.graphviz.org/u/The_book)\
**Post date:** [January 31, 2025, 9:17am UTC](https://forum.graphviz.org/t/how-to-force-line-do-not-cross-node-in-sfdp/2686/1 "2025-01-31T09:17:57Z")

</div>

```dot
digraph {
layout="sfdp"

A->B

A->C

D->B

E->D

B->E

E->C

E->A

C->D

F->C

B->G

A->G

D->G

E->G

H->G

B->H

H->A

D->H

F->B

H->E

F->E

B->C

B->I

C->I

A->I

D->I

I->G
}

```

[dot]

digraph {  
layout=“sfdp”

A-\>B

A-\>C

D-\>B

E-\>D

B-\>E

E-\>C

E-\>A

C-\>D

F-\>C

B-\>G

A-\>G

D-\>G

E-\>G

H-\>G

B-\>H

H-\>A

D-\>H

F-\>B

H-\>E

F-\>E

B-\>C

B-\>I

C-\>I

A-\>I

D-\>I

I-\>G  
}

[/dot]

 ![link.gv](https://global.discourse-cdn.com/graphviz/original/2X/8/87fc1379a4f1335d68e8d0c0d132a88e052fed09.png)

---

<div class="post-metadata">

**Author:** ![The\_book](https://avatars.discourse-cdn.com/v4/letter/t/b2d939/32.png) [@The\_book](https://forum.graphviz.org/u/The_book)\
**Post date:** [January 31, 2025, 9:20am UTC](https://forum.graphviz.org/t/how-to-force-line-do-not-cross-node-in-sfdp/2686/2 "2025-01-31T09:20:09Z")

</div>

there is a line cross node G. how to avoid those situation?

---

<div class="post-metadata">

**Author:** ![steveroush](https://avatars.discourse-cdn.com/v4/letter/s/a9adbd/32.png) [@steveroush](https://forum.graphviz.org/u/steveroush)\
**Post date:** [January 31, 2025, 4:38pm UTC](https://forum.graphviz.org/t/how-to-force-line-do-not-cross-node-in-sfdp/2686/3 "2025-01-31T16:38:41Z")

</div>

Please provide the input file.

---

<div class="post-metadata">

**Author:** ![The\_book](https://avatars.discourse-cdn.com/v4/letter/t/b2d939/32.png) [@The\_book](https://forum.graphviz.org/u/The_book)\
**Post date:** [January 31, 2025, 11:43pm UTC](https://forum.graphviz.org/t/how-to-force-line-do-not-cross-node-in-sfdp/2686/4 "2025-01-31T23:43:29Z")

</div>

Provided in the main post now

---

<div class="post-metadata">

**Author:** ![steveroush](https://avatars.discourse-cdn.com/v4/letter/s/a9adbd/32.png) [@steveroush](https://forum.graphviz.org/u/steveroush)\
**Post date:** [February 1, 2025, 12:20am UTC](https://forum.graphviz.org/t/how-to-force-line-do-not-cross-node-in-sfdp/2686/5 "2025-02-01T00:20:18Z")

</div>

Using the **splines** attribute will prevent the edges from crossing the node faces - see below.  
\*_sfdp_ is arguably not the “best” layout engine for this graph. **sfdp** was designed to handle much larger graphs. It works, but **neato** and **fdp** are probably better suited for graphs of this size. **neato** in particular has the **mode** and **model** attributes that will give different layouts.

 ![sfdpEdge0.true](https://global.discourse-cdn.com/graphviz/original/2X/6/69319159efaa58709bd123ec52034016561e6217.png)

 ![sfdpEdge0.polyline](https://global.discourse-cdn.com/graphviz/original/2X/f/fb590c0e17315f7d6ef5ab680404975c8e7a3997.png)

---

<div class="post-metadata">

**Author:** ![The\_book](https://avatars.discourse-cdn.com/v4/letter/t/b2d939/32.png) [@The\_book](https://forum.graphviz.org/u/The_book)\
**Post date:** [February 1, 2025, 3:44am UTC](https://forum.graphviz.org/t/how-to-force-line-do-not-cross-node-in-sfdp/2686/6 "2025-02-01T03:44:53Z")

</div>

thanks, I will try splines

for fdp and neato, things look like worse.  
neato

 ![neato](https://global.discourse-cdn.com/graphviz/original/2X/5/5b7b7fd829e31299ff6de95491e025cb1634ad9b.png)

fdp

 ![fdp](https://global.discourse-cdn.com/graphviz/original/2X/1/122de54e6e0595c2e545ba6f972b9fcad36e3f9f.png)

Actually, I was using circo before. Force node alignment by circle solves the problem of lines passing through nodes

---

<div class="post-metadata">

**Author:** ![steveroush](https://avatars.discourse-cdn.com/v4/letter/s/a9adbd/32.png) [@steveroush](https://forum.graphviz.org/u/steveroush)\
**Post date:** [February 1, 2025, 4:33am UTC](https://forum.graphviz.org/t/how-to-force-line-do-not-cross-node-in-sfdp/2686/7 "2025-02-01T04:33:02Z")

</div>

just for fun (many lesser results not included)

 ![sfdpEdge1.montage](https://global.discourse-cdn.com/graphviz/original/2X/f/f7decb1d627bf85d752dc38e6dd3e9025c8a32a9.png)

---

<div class="post-metadata">

**Author:** ![The\_book](https://avatars.discourse-cdn.com/v4/letter/t/b2d939/32.png) [@The\_book](https://forum.graphviz.org/u/The_book)\
**Post date:** [February 1, 2025, 4:37am UTC](https://forum.graphviz.org/t/how-to-force-line-do-not-cross-node-in-sfdp/2686/8 "2025-02-01T04:37:34Z")

</div>

thanks.  
These nodes should not have an order, so I do not use dot layout.  
I will check other layout.
