这是我的graphviz代码:
digraph G {
rankdir="LR"
node [shape=square]
exDNS [label="External DNS"]
inDNS [label="Internal DNS"]
tm [label="Traffic Manager"]
pri [label="App Service\nPrimary Region"]
sec [label="App Service\nSecondary Region"]
Browser -> {inDNS,exDNS} -> Imperva-> tm -> {pri,sec}
Browser -> Imperva -> {pri,sec}
}它产生了以下结果:

我希望边Browser -> Imperva在节点External DNS和Internal DNS之间一直走。
我该怎么做呢?
我用的是点渲染器。
发布于 2020-09-01 22:30:08
很难使边缘表现出来(显式地定位它们)。但是,通过将边缘附加到端口,可以对边缘位置产生一定的影响。
我想这就是你想要的:
digraph G {
rankdir="LR"
// graph [splines=polyline]
node [shape=square]
exDNS [label="External DNS"]
inDNS [label="Internal DNS"]
tm [label="Traffic Manager"]
pri [label="App Service\nPrimary Region"]
sec [label="App Service\nSecondary Region"]
Browser:ne -> exDNS -> Imperva
Browser:e -> Imperva
Browser:se -> inDNS -> Imperva
Imperva-> tm -> {pri,sec}
Imperva -> {pri,sec}
}

发布于 2020-09-12 23:37:36
你可以在不摆弄端口的情况下做到这一点。
当前点首先明确定义exDNS和inDNS,然后在边缘隐式定义Imperva,即定义为第三。
我在下面的点中添加的全部内容是exDNS和inDNS之间节点inDNS的显式声明,也就是说,它在inDNS之前被定义为第二个。
我认为这是因为在导点第2.6节中有这样的措辞(注意,在这些词中,rankdir是默认的自上而下的,因此对于rankdir=LR来说,左作为顶,右是底部):
If a subgraph has ordering=out, then out-edges within the subgraph that have the same tail node wll fan-out from left to right in their order of creation.我不完全确定这就是原因,因为dotguide没有给出ordering的默认设置。
不管指南是什么,在下面的点中,如果我将Imperva的定义移至exDNS节点声明之上的一行,那么从Browser到Imperva的边缘将通过exDNS (因为Imperva是首先定义的)。将节点Imperva的定义移到inDNS的线下面--或者完全省略这个节点的显式定义,就像您的点一样--所以Imperva是在inDNS之后定义的,并且边缘像图一样在inDNS下面。
digraph G {
rankdir="LR"
node [shape=square]
exDNS [label="External DNS"]
Imperva;
inDNS [label="Internal DNS"]
tm [label="Traffic Manager"]
pri [label="App Service\nPrimary Region"]
sec [label="App Service\nSecondary Region"]
Browser -> {inDNS,exDNS} -> Imperva-> tm -> {pri,sec}
Browser -> Imperva -> {pri,sec}
}生产:

https://stackoverflow.com/questions/63694699
复制相似问题