【问题标题】:Graphviz: How to create overlapping subnode on another?Graphviz:如何在另一个上创建重叠子节点?
【发布时间】:2019-02-17 16:08:39
【问题描述】:

我想创建像上面那样与另一半内联和外联的子节点。

digraph G {
node [fontsize=8  margin=".1,.01" width=.5 height=.5 shape=box]
edge [fontsize=8]
rankdir=LR;
ranksep = .25;
nodesep= .5;
{
    subgraph cluster0 {
        label = "VMWare";
        {
            subgraph cluster3{
                style = dashed;
                color=red;
                label = "ESX";
                VM1 
                [
                    shape = rectangle
                    label = "Virtual Machine 1"
                ]
                VPN_NIC [shape = rectangle label="Physical NIC\nPromiscuous mode ON" style=rounded]
                VM1 -> VPN_NIC [style=dotted];
            }
        }
        edge [dir=none]
        INT_NET [label = "Internal Network"];
        VPN_NIC -> INT_NET;
    }
}

}

我想让名为 Physical NIC 的组件重叠在 ESXi 边界线上。 也许在展示网络图时会出现这种需求——尤其是与内部网络和外部网络连接的桥梁。

【问题讨论】:

  • 能否请edit 提供您编写的一些代码示例以尝试创建它?
  • 感谢@thesecretmaster 更新了我的代码,但到目前为止,我可以将节点放在集群内或集群外。
  • 遗憾的是,我对 graphviz 了解不多,我只是想让知道的人更容易回答您的问题。

标签: networking graphviz diagram venn-diagram


【解决方案1】:

您可以使用 HTML 标签,但是您必须将重叠的节点合并到一个节点中,例如:

digraph name {
rankdir=LR

X[shape=none margin=0 label=<
<table cellspacing="0" cellborder="1" border="0">
<tr><td sides="LT"></td><td sides="TR"></td><td sides="L"></td></tr>
<tr><td sides="L">Some text</td><td colspan="2" style="rounded" port="a">Line 1<br/>Line 2</td></tr>
<tr><td sides="LB"></td><td sides="BR"></td><td sides="L"></td></tr>
</table>
>]

X:a:e->Y
}

在 viz-js.com 上呈现:

【讨论】:

  • 感谢@Jens,您的解决方案可以将其放在节点边界上。但是,根据问题,我想把它放在两个子图的边界上。
  • @vkumbhar94 我认为您不能将节点放在子图的边界上。此外,问题标题似乎是准确的
猜你喜欢
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多