【问题标题】:evenly distribute pygraphviz nodes均匀分布 pygraphviz 节点
【发布时间】:2021-03-30 18:12:59
【问题描述】:

我有一个这样的graphviz代码:

        import pygraphviz as pgv
        A = pgv.AGraph(strict=False, directed=True,
                       overlap=False, sep="+10,10")
        [A.add_node(k) for k, v in S]  # adding all nodes

        A.add_edge(S.created, S.packaged_unassigned)
        A.add_edge(S.packaged_unassigned, S.packaged_assigned)
        A.add_edge(S.packaged_assigned, S.packaged_unassigned, style="dotted")
        A.add_edge(S.packaged_assigned, S.shipped_to_distributor)
        A.add_edge(S.shipped_to_distributor, S.on_distributor_side_out)
        A.add_edge(S.on_distributor_side_out, S.shipped_to_deployer)
        A.add_edge(S.shipped_to_deployer, S.on_distributor_side_in)
        A.add_edge(S.on_distributor_side_in, S.shipped_to_lab)
        A.add_edge(S.shipped_to_lab, S.on_lab_side)
        A.add_edge(S.on_lab_side, S.analysis_completed)
        A.add_edge(S.analysis_completed, S.completed)
        A.layout()
        A.draw("status_chart.png")

产生这个输出: https://i.ibb.co/7pJQ8rd/Screenshot-2020-12-20-at-22-23-10.png

我担心的是节点似乎没有正确利用可用空间。相反,它们只是跨越图像的对角线。 我怎样才能让graphviz更好地利用空间来创建更小的图像,同时保持没有重叠的约束?

【问题讨论】:

    标签: graphviz pygraphviz


    【解决方案1】:

    一个约束是你已经指定了一个链式图。因此,情节受到了一些限制。

    请参阅文档以了解一些可能的替代选项来指定:

    https://pygraphviz.github.io/documentation/latest/reference/agraph.html

    例如,您可以尝试指定横向视图 AGraph(landscape='true'...)

    您也可以尝试使用不同的布局指令:

    可选的 prog=['neato'|'dot'|'twopi'|'circo'|'fdp'|'nop'] 将使用指定的 graphviz 布局方法。

    另见:

    unflatten(args='')
    

    调整有向图以提高布局纵横比。

    您可以使用的另一种技术是分解图表的各个部分,使其看起来像这样(使用编号方案向节点添加文本标签):

    (1) -> (2) ->(3)
    (4) -> (5) ->(6)
    ...
    

    注意:该库的 Python 文档特别是建议您还参考 Graphviz 文档...以获取其他选项。

    http://www.graphviz.org/doc/info/lang.html

    http://www.graphviz.org/doc/info/attrs.html

    例如:

    http://www.graphviz.org/doc/info/attrs.html#d:ratio

    http://www.graphviz.org/doc/info/attrs.html#a:layout

    http://www.graphviz.org/doc/info/attrs.html#d:scale

    图库也有一些很好的例子,说明了不同参数的使用

    http://www.graphviz.org/gallery/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-04
      • 2011-04-04
      • 2015-06-20
      • 1970-01-01
      相关资源
      最近更新 更多