如何解决在graphviz中如何在两个节点之间施加直边?
这是我的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
之间直行。
我该怎么办?
我正在使用点渲染器。
解决方法
很难使边缘表现出来(明确地放置它们)。但是通过将边缘连接到端口,可以对边缘位置产生一些影响。
我认为这就是您所追求的:
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}
}
,
您可以做到这一点而无需摆弄端口。
您当前的点首先明确定义了exDNS和inDNS,然后在边缘隐式定义了Imperva。
我在下面的点中添加的是Imperva
和exDNS
之间的节点inDNS
的显式声明。
我认为这是可行的,因为dotguide 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.
TBH我不能完全确定原因,因为dotguide没有为ordering
提供默认值。
无论点指南如何,如果我将Imperva
的定义上移一行到exDNS
节点声明的上方,则边缘从Browser
到{{1 }}越过Imperva
(因为首先定义了exDNS
)。将节点Imperva
的定义移到Imperva
的行下方-或完全像您的点一样忽略该节点的显式定义-因此Imperva是在inDNS之后定义的,并且边缘位于{{1}以下},就像您的图表一样。
inDNS
产生:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。