【问题标题】:Graphviz unwanted subgraph node separation stretchGraphviz 不需要的子图节点分离拉伸
【发布时间】:2021-09-26 17:26:00
【问题描述】:

我有两个由点渲染的图表:

   graph G {
    graph[rankdir=LR]
    node[shape=circle, fontname="Courier-Bold", fontsize=10, width=0.4, height=0.4, fixedsize=true]
    edge[arrowsize=0.6, fontname="Courier-Bold", fontsize=10, arrowhead=vee]
    v0 -- i0 [label=11]
    v1 -- i0 [label=2]
    v2 -- i0 [label=10]
    i0 -- i1 [label=4]
    i1 -- i2 [label=3]
    i2 -- v3 [label=3]
    i2 -- v4 [label=4]
    i1 -- v5 [label=0, style=dashed]
   }
   graph G {
    graph[rankdir=LR]
    node[shape=circle, fontname="Courier-Bold", fontsize=10, width=0.4, height=0.4, fixedsize=true]
    edge[arrowsize=0.6, fontname="Courier-Bold", fontsize=10, arrowhead=vee]
    subgraph cluster_two {
     fontname="Courier-Bold"
     fontsize=10
     v0 -- i0 [label=11]
     v1 -- i0 [label=2]
     v2 -- i0 [label=10]
     i0 -- i1 [label=4]
     i1 -- i2 [label=3]
     i2 -- v3 [label=3]
     i2 -- v4 [label=4]
     i1 -- v5 [label=0, style=dashed]
    }
   }

第二张图与第一张图完全相同,只是它被包裹在子图中。无论出于何种原因,子图包装使得节点分离比正常范围更宽:

nodesep 属性不控制子图下的节点。有什么可以让节点放置恢复正常(如第一张图片所示)?

【问题讨论】:

  • 也许this 可能有用?
  • @Sherif 我也看到了那个帖子,但我不知道它是否适用。但如果是这样,我不明白。也许对graphviz / dot有更好处理的人可以帮助我解开它。
  • 您使用的是什么版本的 Graphviz(点 -V)以及什么操作系统。我在带有 graphviz 版本 2.43.0 的 Linux 上没有遇到这个问题。 p.s.看看rankep,而不是nodeep
  • @sroush 2.40.1 在 Alpine Linux 上。根据您的建议,在主图(而不是子图)上设置 rankep=0.25 可以修复渲染。但是,我不知道为什么。您对子图和节点ep/ranksep 的情况有任何见解吗?另外,如果您可以发表评论作为问题的答案,我可以接受它,以便您获得荣誉。

标签: graphviz dot


【解决方案1】:

Ranksep 是设置从一个等级到下一个等级的距离的属性。 Ranksep 是图级属性。设置后,它适用于整个图形。 nodesep 也是如此,除了 nodesep 设置 same 等级上的两个 相邻 节点之间的距离。 p.s. 2.40.1 是一个相当旧的版本。在过去 18 个月左右的时间里,已经应用了许多修复程序(我不相信)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2010-12-18
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    相关资源
    最近更新 更多