【问题标题】:How can I adjust a GraphViz render如何调整 GraphViz 渲染
【发布时间】:2022-08-23 03:25:46
【问题描述】:

我正在尝试渲染一棵非常宽阔的树……并且正如预期的那样,它渲染成一个又长又瘦的水平图像。

问题是我需要一个适合文档的图表。我非常想采取并移动水平渲染的节点并将它们“拖动”下来,以使图形更加垂直......边缘弯曲以适应这一点。有什么聪明的方法可以做到这一点吗? GraphViz 设置?让我操纵和微调输出的第三方工具?我主要在 Python 生态系统中工作,但对其他人开放。也可以使用 Visio 和其他专业绘图工具等工具。谢谢!

编辑

在@sroush 实现下面的答案后,然后用 Photoshop 进一步调整,得到了一些不错的结果。

在 Photoshop 中调整上述内容。不得不手动添加辅助节点后的两条弯曲边缘,但这是值得的。更有范儿。

    标签: python-3.x graphviz


    【解决方案1】:

    我假设您使用的是点,并且您的图表“自然”只有几个等级(行)。
    有一些调整会有所帮助(减少节点水平足迹):

    • node [shape=rect] // 贴合矩形
    • 在节点标签中插入换行符,例如xxx [label="Controller Board\n@19_8"])

    也试试展平程序(https://www.graphviz.org/pdf/unflatten.1.pdf)。它将增加等级(行)的明显数量。

    请参阅此处的相关问题和命令行示例: Distribute nodes on the same rank of a wide graph to different lines

    【讨论】:

    • 感谢您让我意识到 unflatten!是的,我现在将尝试直接调整 .dot 文件。此外,将添加一个指向现有 SO 问题的链接以补充您的答案,以防它帮助其他人。谢谢!
    【解决方案2】:

    您可以使用minlen 属性来限制某些边缘的最小水平跨度。这样可以避免结果在水平位置变得很长。 例如:

    digraph {
    a->b
    a->c
    a->d
    a->e
    }
    

    这将输出以下图像:

    但是使用 minlen 时,图片会纵向变长,横向变短:

    digraph {
    a->b
    a->c
    a->d[minlen=2]
    a->e[minlen=3]
    }
    

    【讨论】:

      猜你喜欢
      • 2014-11-03
      • 2021-10-04
      • 2020-01-03
      • 1970-01-01
      • 1970-01-01
      • 2021-04-10
      • 2013-08-12
      • 2013-11-15
      • 2017-10-03
      相关资源
      最近更新 更多