Tag: 图形绘制

绘制有向非循环图:最小化边缘交叉?

以树forms在DAG中布置顶点(即顶部没有内边的顶点,顶点仅依赖于下一层上的顶点等)相当简单,没有图形绘制算法,如Efficient Sugiyama。 但是,是否有一个简单的算法可以最大限度地减少边缘交叉? (对于某些图形,可能无法完全消除边缘交叉。)图片说千言万语,所以有一种算法会暗示没有交叉边缘的东西 。 ( 与此相比 )。 编辑:结果 我已经接受了Senthil的建议graphviz / dot – 快速浏览文档确认它很容易用作库或外部工具 ,并且输出格式非常容易解析 。 然而,我最终选择使用GraphSharp,因为我已经在使用.NET等(虽然它绝对不像dot那么强大)。 结果是“足够好”,并且通过一点边缘路由和调整可以做得更好(模糊文本是因为3.5 WPF )。 自动布局图http://public.blu.livefilestore.com/y1pEY8I95GtlzcxZzhDMhhKoUyejT_sVVZ4jlsDK2fdl6XAR4WV4-yuSesY6chXokmAZxdJXZ4Bv674TqwpT1-fOg/dag3.gif 这是完整的 C#代码(这是引用QuickGraph或GraphSharp的所有代码 – 是的;就这么简单): internal static class LayoutManager { private const string ALGORITHM_NAME = “EfficientSugiyama”; private const bool MINIMIZE_EDGE_LENGTH = true; private const double VERTEX_DISTANCE = 25; private const double LAYER_DISTANCE = 25; private […]