42

我正在构建一个点文件来表示计算机硬件以及与网络交换机和显示器的物理连接。当它被 dot 程序处理时,我看起来还不错,但我想我真的希望它被neato 处理,以便在它开始变形时创建一个更“自由形式”的图片。现在当我用neato运行我的大文件时,一切都是重叠的。

我试图找出定义overlap属性的语法。下面是我的点文件的一个子集。

graph g {  
    node [shape=record,height=.1];  
    PC8[label="{{<GigE1>GigE1|<GigE2>GigE2}|{<name>PC8}|{<dvi1>dvi1|<dvi2>dvi2|<dvi3>dvi3|<dvi4>dvi4}}"];  
    PC9[label="{{<GigE1>GigE1|<GigE2>GigE2}|{<name>PC9}|{<dvi1>dvi1|<dvi2>dvi2|<dvi3>dvi3|<dvi4>dvi4}}"];
    C1[label = "{{<dvi1>dvi1}|{<name>C1}}"];  
    C2[label = "{{<dvi1>dvi1}|{<name>C2}}"];  
    C3[label = "{{<dvi1>dvi1}|{<name>C3}}"];  
    C4[label = "{{<dvi1>dvi1}|{<name>C4}}"];  
    D1[label = "{{<dvi1>dvi1}|{<name>D1}}"];  
    D2[label = "{{<dvi1>dvi1}|{<name>D2}}"];  
    "PC8":dvi1 -- "C1":dvi1;  
    "PC8":dvi2 -- "C2":dvi1;  
    "PC8":dvi3 -- "C3":dvi1;  
    "PC8":dvi4 -- "C4":dvi1;  
    "PC9":dvi1 -- "D1":dvi1;  
    "PC9":dvi2 -- "D2":dvi1;  
}
4

2 回答 2

48

好吧,就像大多数问题一样……在我发布之后不久,我就找到了答案。我需要graph [overlap=false];在文件顶部添加。

像这样做:

graph g {
    overlap = false;

    node [shape=record,height=.1];
    /* ... */
}
于 2009-12-07T15:24:25.923 回答
2

正如社区 wiki 回答所说,将重叠设置为 false 将适用于neato;但是,如果图形表现出任何规律性或对称性,[overlap=false]通常会通过摇晃节点以使它们不重叠而将其弄乱。

[overlap=false]作为最后的手段使用。

从neato 输出的所有节点重叠都可以被视为发生,因为节点相对于边来说太大了。您可以通过使节点更小来消除任何重叠,并通过设置保持图形中的对称性[overlap=scale]。引用Neato 用户手册

为了提高清晰度,有时消除重叠节点或边缘会有所帮助。消除节点重叠的一种方法是根据需要扩大布局(根据节点的中心点)。这是通过设置图形属性重叠=比例来启用的。这种转换保留了布局中的整体几何关系,但在糟糕的情况下可能需要高比例因子

正如文档所说,[overlap=scale]可能会导致图形过大,但如果不是这样,它的输出通常会比[overlap=false].

于 2020-10-27T18:13:21.647 回答