为 'good looking' 图表布局安排 nodes-edges
Arranging nodes-edges for 'good looking' graph layout
我遇到了论文 NodeTrix 中提出的以下图形布局:
可见的大块是节点本身(一种 sub-graph 的复合节点)。
我看到边缘是某种曲线,它们之间似乎没有太多相交。此外,节点和边之间不相交。顺便说一句,论文不谈论它。
我希望实现这个可视化。我有以下疑问:
Q1。这是一些特定的算法来安排 Nodes-Edges 以便图形 看起来不错 ,如本文所示?一般还有其他算法吗?
Q2。上面显示的弯曲边缘是否也有一些特殊算法?
如果有人能直观地找出上图中的确切算法就太好了,但是一些通用的类似算法也应该可以。
一种算法是Force-directed graph drawing. It will produce an output very different from the posted picture, but it is quite popular and might give you a place to start looking。
老实说,我怀疑显示的图形是手动布局的。
编辑:对评论的回答
在示例中,所有节点都是方框,边 start/end 与方框的边成对角线。一种方法可以是
- 使用力方向放置盒子(或者可能是它的一些自定义版本,力取决于盒子的大小)
- 想象一下 "guide-edge" 直接在框的中心之间移动
- 计算引导边与框相交的位置,并将其用作实际绘制边的 start/end 点。
- 使真正的边缘从对角线开始,用bezier curves绘制曲线。
您可能希望将其表示为某种矢量格式,具有 bezier cures built in, e.g., svg.
我遇到了论文 NodeTrix 中提出的以下图形布局:
可见的大块是节点本身(一种 sub-graph 的复合节点)。
我看到边缘是某种曲线,它们之间似乎没有太多相交。此外,节点和边之间不相交。顺便说一句,论文不谈论它。
我希望实现这个可视化。我有以下疑问:
Q1。这是一些特定的算法来安排 Nodes-Edges 以便图形 看起来不错 ,如本文所示?一般还有其他算法吗?
Q2。上面显示的弯曲边缘是否也有一些特殊算法?
如果有人能直观地找出上图中的确切算法就太好了,但是一些通用的类似算法也应该可以。
一种算法是Force-directed graph drawing. It will produce an output very different from the posted picture, but it is quite popular and might give you a place to start looking。
老实说,我怀疑显示的图形是手动布局的。
编辑:对评论的回答
在示例中,所有节点都是方框,边 start/end 与方框的边成对角线。一种方法可以是
- 使用力方向放置盒子(或者可能是它的一些自定义版本,力取决于盒子的大小)
- 想象一下 "guide-edge" 直接在框的中心之间移动
- 计算引导边与框相交的位置,并将其用作实际绘制边的 start/end 点。
- 使真正的边缘从对角线开始,用bezier curves绘制曲线。
您可能希望将其表示为某种矢量格式,具有 bezier cures built in, e.g., svg.