代码之家  ›  专栏  ›  技术社区  ›  jason

pygraphviz:添加{rank=same;node1 node2}

  •  0
  • jason  · 技术社区  · 7 年前

    我看不到在中添加相同排名的示例 pygraphviz . 现在,我要走了 G.string() 字符串和附加 {rank = same; node1 node2}

    0 回复  |  直到 7 年前
        1
  •  0
  •   beepscore    7 年前

    在我的代码中, add_nodes_from()

    A.add_nodes_from(["coyote", "wolf"])
    

    add_edge()

    A.add_edge(1,2)
    

    constraint=False 将节点放置在同一水平标高上:

    A.add_edge(previous_item, item, rank='same', constraint=False)
    

    我写了一个函数:

    def add_nodes_connected_by_edges(graph, items, rank_same):
        """
        Adds nodes to graph, one node per string in items
        :param graph: a pygraphviz graph
        :param items: a list of strings
        :param rank_same: boolean. True ranks nodes so they appear at same horizontal level
        """
        previous_item = None
    
        for item in items:
            graph.add_node(item)
            if previous_item is not None:
                # Use constraint=False to keep rank same
                # https://stackoverflow.com/questions/22756929/graphviz-make-edges-not-affecting-the-hierarchy-of-nodes
                graph.add_edge(previous_item, item, rank='same', constraint=(not rank_same))
    
            previous_item = item
    

    graphvizzy 存储库显示了一个更完整的示例 pygraphviz nodes