【问题标题】:pygraphviz: adding {rank = same; node1 node2}pygraphviz:添加 {rank = 相同;节点1节点2}
【发布时间】:2019-07-21 19:40:27
【问题描述】:

我没有看到在 pygraphviz 中添加相同排名的示例。现在我正在使用G.string() 字符串并在末尾附加{rank = same; node1 node2}。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: graphviz rank pygraphviz


    【解决方案1】:

    在我的代码中,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仓库展示了一个更完整的例子

    【讨论】:

      猜你喜欢
      • 2020-04-23
      • 2021-03-30
      • 2017-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      • 1970-01-01
      • 2016-06-16
      相关资源
      最近更新 更多