2012-04-11 5 views
10

Ich versuche, Kantenbeschriftungen für ein Diagramm hinzuzufügen. Alles funktioniert gut, das Problem ist nur, wenn sich die beiden Kanten schneiden - ich sehe nur eine der Etiketten, wenn sie sich überlappen.Wie setze ich NetworkX Edge Labels Offset? (um eine Überlappung der Etiketten zu vermeiden)

example

Wie Sie das hphob-alpha-Label angezeigt wird sehen können, aber die Polarität-Beta-Label ist nicht gezeigt (meine Vermutung ist, dass es direkt unter der oben genannten ist).

Ich konnte keine Dokumentation finden, wie die Etiketten neu positioniert werden können. Wie kann man einen Offset einstellen, um die Etiketten zu bewegen?

-Code verwendet, um die Grafik zu erzeugen:

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 

Antwort

9

Ich benutze die Version 1.6 von NetworkX, und da kann ich label_pos zu draw_networkx_edge_labels() einreichen. Standardmäßig ist diese auf 0,5 eingestellt, aber mit Ihrem Beispiel und wenn er auf 0,3, erhalte ich das folgende Ergebnis: 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

ich gerade gesehen, dass es in der [Dokumentation ist für Version 1.6] (http://networkx.lanl.gov/reference/generated/networkx.drawing.nx_pylab.draw_networkx_edge_labels.html). – Maehler

+0

Der andere Vorteil besteht darin, dass eine Kante mehrere Labels haben kann und an diesen unterschiedlichen Offsets positioniert werden kann. – Vikram

Verwandte Themen