graphviz 中的简单线性排列

问题描述 投票:0回答:2

我想生成这样的简单线性排列:

graph I'd love to recreate with graphviz

我觉得我这样做太难了。我尝试对位置进行硬编码,但它有点复杂,因为我想要花键边缘。

我并不特别关心边缘是在上面还是在下面,但指定这一点将是一个很好的功能。

graphviz dot neato
2个回答
8
投票

这是人们可能认为使用 graphviz 做起来一定很简单的事情之一,但事实上并非如此。

Graphviz 旨在“最小化”边缘交叉,因此它永远不会像这些图片中那样放置边缘。 这不是 graphviz 的用途 但我同意有一个关闭边缘优化的选项会很好。

你可以创建这样的东西:

rankdir=LR; ranksep=0; edge[style=invis]; node[shape=none, width=0.3, height=0, margin=0.02]; 4->7->5->1->8->3->6->2; edge[style=solid, constraint=false]; 1:s->2:s->3:s->4:s->5:s->6:s->7:s->8:s

导致

graphviz output一旦开始使用南北端口,graphviz 就会尝试最小化边交叉并引导节点之间的一些边:

rankdir=LR; ranksep=0.05; edge[style=invis]; node[shape=none, width=0.3, height=0, fontsize=12, margin=0.02]; 4->7->5->1->8->3->6->2; edge[style=solid, weight=0]; 1:n->2:n; 2:s->3:s->4:s; 4:n->5:n->6:n; 6:s->7:s; 7:n->8:n;

an other graphviz output如果有人有更好的近似值,请发布,我很感兴趣。


0
投票
IPE

。这是一个在 LateX 之上工作的图形编辑器,也就是说,您绘制的所有内容都由您选择的某个 LaTeX 引擎(默认情况下为 pdflatex)渲染。这是免费软件。 安装后,您可以使用我为该程序制作的插件之一,我将其称为

ipe.embedviz

。这样,您可以通过输入排列来绘制图形的线性排列(指定为边列表)。您还可以绘制圆形和二分嵌入(请查看 wiki here)。按照 github 存储库的自述文件中的说明进行安装。 使用 ipelet 绘制任何想要的内容后,您可以随意编辑结果。绘图可以保存为 PDf,可以使用

\includegraphics{}

命令在任何 LaTeX 文档中使用。

    

© www.soinside.com 2019 - 2024. All rights reserved.