【问题标题】:Incorrect edge labels in NetworkXNetworkX 中的边缘标签不正确
【发布时间】:2018-07-22 02:31:34
【问题描述】:

我发现 networkx 包有些奇怪。这是一个最小的具体可验证示例。

import networkx as nx
import matplotlib.pyplot as plt

G = nx.DiGraph()
G.add_edge('A', 'B', weight=1, title='ab', subtitle='testing')
edge_labels = nx.get_edge_attributes(G, 'title')
print(edge_labels)

这给出了预期的输出,即边缘的标题属性。

{('A', 'B'): 'ab'}

当我使用 edge_labels 进行绘图时,

fig = plt.figure()
ax1 = plt.subplot2grid((1, 1), (0, 0))
pos = nx.spring_layout(G)
nx.draw(G, pos, with_labels=True)

nx.draw_networkx_edge_labels(G, pos, labels=edge_labels)
plt.show()

我看到下图,其中显示了所有边缘属性。我希望只有标题会出现。

我正在构建的图形是一个分步过程,因此边缘标签会随着更多信息的处理而更新。如何在图构建结束时仅使用我想要的属性标记边缘?

【问题讨论】:

    标签: python networkx


    【解决方案1】:

    使用

    nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels)
    

    而不是

    nx.draw_networkx_edge_labels(G, pos, labels=edge_labels)
    

    import networkx as nx
    import matplotlib.pyplot as plt
    
    G = nx.DiGraph()
    G.add_edge('A', 'B', weight=1, title='ab', subtitle='testing')
    edge_labels = nx.get_edge_attributes(G, 'title')
    print(edge_labels)
    
    fig = plt.figure()
    ax1 = plt.subplot2grid((1, 1), (0, 0))
    pos = nx.spring_layout(G)
    nx.draw(G, pos, with_labels=True)
    
    nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels)
    plt.show()
    

    产量


    由于call signature for nx.draw_networkx_edge_labels 看起来像这样:

    draw_networkx_edge_labels(G, pos, edge_labels=None, label_pos=0.5,
        font_size=10, font_color='k', font_family='sans-serif',
        font_weight='normal', alpha=1.0, bbox=None, ax=None, rotate=True, **kwds)
    

    该函数期望标签由关键字参数edge_labels 提供。由于调用签名中还包含**kwds,所以伪参数labels被默默吞下,this piece of code

    if edge_labels is None:
        labels = dict(((u, v), d) for u, v, d in G.edges(data=True))
    

    生成了您在结果中看到的“奇怪”标签。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-16
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 2018-04-16
      • 2016-04-10
      • 2020-06-24
      相关资源
      最近更新 更多