【问题标题】:Passing extra arguments to networkx graphviz_layout not working将额外参数传递给 networkx graphviz_layout 不起作用
【发布时间】:2021-03-15 20:00:39
【问题描述】:

我想向graphviz_layout() 传递一个额外的参数,我正在这样做,但它什么也没做。我也尝试过传递其他参数,但同样的问题。

它可以正确识别它,因为如果我将参数更改为无意义的东西,我会得到一个错误。

我指的是这个文档:https://graphviz.org/doc/info/attrs.html#d:rankdir

from networkx.drawing.nx_agraph import graphviz_layout

G = model.block_tree.tree
pos = graphviz_layout(G, prog='dot', root=0, args='-Grankdir="LR"')

plt.title(r"Blockchain with Selfish Mining ($\alpha$ = {})".format(alpha))
nx.draw_networkx_nodes(G, pos, node_color=color_vector, node_shape='s', node_size=300)
nx.draw_networkx_edges(G, pos, edgelist=G.edges(), arrows=True)
nx.draw_networkx_labels(G, pos, font_size=10, font_color="white")
plt.show()

有人知道为什么它不起作用吗?

这是我正在制作的图表。我希望它会旋转,因此它是水平的,但它不是......

有人知道为什么吗?我会非常感激。提前致谢!

PS:有一些相关的帖子,但没有一个对我有用...

【问题讨论】:

    标签: python networkx graphviz dot pygraphviz


    【解决方案1】:

    您提供的 rankdir 参数与“root”参数之间存在冲突。如果您删除后者,它应该尊重您的顺序。

    因为我没有你的数据,所以我做了一个简单的例子:

    import matplotlib.pyplot as plt
    from networkx.drawing.nx_agraph import graphviz_layout
    import networkx as nx
    
    G = nx.Graph()
    
    G.add_nodes_from([0, 1])
    G.add_edge(0, 1)
    pos = graphviz_layout(G, prog='dot', root=0, args='-Grankdir="LR"')
    
    nx.draw_networkx_nodes(G, pos, node_shape='s', node_size=300)
    nx.draw_networkx_edges(G, pos, edgelist=G.edges(), arrows=True)
    nx.draw_networkx_labels(G, pos, font_size=10, font_color="white")
    plt.show()
    
    

    这会产生以下输出:

    但如果我只是删除 root=0 参数,我会得到:

    【讨论】:

    • 哈利路亚!这立即解决了我的问题。谢谢你!
    猜你喜欢
    • 1970-01-01
    • 2015-07-14
    • 2011-03-06
    • 2018-10-07
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 2021-02-27
    • 2012-01-04
    相关资源
    最近更新 更多