2012-04-11 21 views
10

Grafik için kenar etiketleri eklemeye çalışıyorum. Her şey iyi çalışıyor, sadece sorun iki kenarın kesiştiği zamandır - etiketlerden sadece birini çakıştıkça görüyorum. NetworkX kenar etiketleri nasıl ayarlanır? (etiket çakışmasını önlemek için)

example

Eğer hphob-alfa etiketi gösterilmektedir ancak kutup-beta etiketi gösterilmez görebileceğiniz gibi

(benim tahminim doğru önce belirtildiği altında olmasıdır).

Etiketlerin nasıl yeniden konumlandırılacağına dair herhangi bir belge bulamadım; etiketleri taşımak için bir çeşit ofsetin nasıl ayarlanacağına dair herhangi bir öneride bulunmuyor mu? grafiği oluşturmak için kullanılan

Kodu:

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 

cevap

9

Ben NetworkX sürümünü 1.6 kullanın ve orada draw_networkx_edge_labels() için label_pos gönderebilirsiniz. Varsayılan olarak, bu 0,5 olarak ayarlanır, ancak örneği kullanarak ve 0.3 düzeye getirmek, ben şu sonuç almak: Ben [belgelerinde sadece şimdi eklenmiş durumda olduğunu gördük Weighted graph with edge labels shifted

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 
) 

Here are the details

+0

sürüm 1.6] (http://networkx.lanl.gov/reference/generated/networkx.drawing.nx_pylab.draw_networkx_edge_labels.html). – Maehler

+0

Diğer yarar, bir kenarın birden fazla etikete sahip olması ve bu farklı ofsetlerde konumlandırılabilmesidir. – Vikram

İlgili konular