To satisfy alignment constraints, we currently use the average position of the nodes in the corresponding direction and align them in that position (for vertical alignment we use average x coordinates and vice versa). However, this enforcement may cause edge crossings like in this example. After this enforcement, we can arrange the order of the nodes in the alignment to minimize such crossings, maybe, with an approach similar to the barycenter heuristic.
To satisfy alignment constraints, we currently use the average position of the nodes in the corresponding direction and align them in that position (for vertical alignment we use average x coordinates and vice versa). However, this enforcement may cause edge crossings like in this example. After this enforcement, we can arrange the order of the nodes in the alignment to minimize such crossings, maybe, with an approach similar to the barycenter heuristic.