首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在图中,如何在两个节点之间强制一个直线边?

在图中,如何在两个节点之间强制一个直线边?
EN

Stack Overflow用户
提问于 2020-09-01 20:04:39
回答 2查看 387关注 0票数 2

这是我的graphviz代码:

代码语言:javascript
复制
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 DNSInternal DNS之间一直走。

我该怎么做呢?

我用的是点渲染器。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-01 22:30:08

很难使边缘表现出来(显式地定位它们)。但是,通过将边缘附加到端口,可以对边缘位置产生一定的影响。

我想这就是你想要的:

代码语言:javascript
复制
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}
}

票数 2
EN

Stack Overflow用户

发布于 2020-09-12 23:37:36

你可以在不摆弄端口的情况下做到这一点。

当前点首先明确定义exDNS和inDNS,然后在边缘隐式定义Imperva,即定义为第三。

我在下面的点中添加的全部内容是exDNSinDNS之间节点inDNS的显式声明,也就是说,它在inDNS之前被定义为第二个。

我认为这是因为在导点第2.6节中有这样的措辞(注意,在这些词中,rankdir是默认的自上而下的,因此对于rankdir=LR来说,左作为顶,右是底部):

代码语言:javascript
复制
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节点声明之上的一行,那么从BrowserImperva的边缘将通过exDNS (因为Imperva是首先定义的)。将节点Imperva的定义移到inDNS的线下面--或者完全省略这个节点的显式定义,就像您的点一样--所以Imperva是在inDNS之后定义的,并且边缘像图一样在inDNS下面。

代码语言:javascript
复制
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}
}

生产:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63694699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档