15

グラフのエッジラベルを追加しようとしています。それはすべてうまく機能しますが、問題は2つのエッジが交差する場合だけです。ラベルが重なっているので、ラベルの1つしか見えません。

例

ご覧のとおり、hphob-alphaラベルは表示されていますが、polarity-betaラベルは表示されていません(前述のラベルのすぐ下にあると思います)。

ラベルを再配置する方法に関するドキュメントが見つかりませんでした。ラベルを移動するために何らかのオフセットを設定する方法についてのアドバイスはありますか?

グラフの生成に使用されるコード:

try:
    import matplotlib.pyplot as plt
except:
    raise

import networkx as nx

G=nx.Graph()

a="hphob"
b="polarity"
c="alpha"
d="beta"
G.add_edge(a,b,weight=0.5)
G.add_edge(b,c,weight=0.5)
G.add_edge(c,d,weight=0.5)
G.add_edge(a,d,weight=0.5)
G.add_edge(a,c,weight=0.5)
G.add_edge(b,d,weight=0.5)

pos=nx.spring_layout(G) # positions for all nodes

# nodes
nx.draw_networkx_nodes(G,pos,node_size=7000, node_color="white")

# edges
nx.draw_networkx_edges(G,pos,
        width=6,alpha=0.5,edge_color='black')


# labels
nx.draw_networkx_labels(G,pos,font_size=20,font_family='sans-serif')

nx.draw_networkx_edge_labels(G,pos, 
    {
        (a,b):"x", (b,c):"y", (c,d):"w", (a,d):"z", (a,c):"v", (b,d):"r"
    }
)

plt.axis('off')
plt.savefig("weighted_graph.png") # save as png
plt.show() # display
4

1 に答える 1

11

私は NetworkX のバージョン 1.6 を使用しており、そこで提出できlabel_posますdraw_networkx_edge_labels()。デフォルトでは、これは 0.5 に設定されていますが、例を使用して 0.3 に設定すると、次の結果が得られます。 エッジ ラベルをシフトした加重グラフ

nx.draw_networkx_edge_labels(G,pos, 
    {
        (a,b):"x", (b,c):"y", (c,d):"w", (a,d):"z", (a,c):"v", (b,d):"r"
    },
    label_pos=0.3
)

詳細はこちら

于 2012-04-11T11:29:55.210 に答える