2012-04-11 44 views
10

Estoy tratando de agregar etiquetas de borde para un gráfico. Todo funciona bien, el único problema es cuando los dos bordes se cruzan: solo veo una de las etiquetas cuando se solapan.¿Cómo establecer el offset de etiquetas de borde de NetworkX? (para evitar la superposición de etiquetas)

example

Como se puede ver la etiqueta hphob-alfa se muestra pero la etiqueta de polaridad-beta no se muestra (mi conjetura es que está justo debajo del mencionado anteriormente).

No pude encontrar ninguna documentación sobre cómo volver a colocar las etiquetas, ¿algún consejo sobre cómo configurar algún tipo de desplazamiento para mover las etiquetas?

código utilizado para generar el gráfico:

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 

Respuesta

9

yo uso la versión 1.6 de NetworkX, y allí se puede someter a label_posdraw_networkx_edge_labels(). Por defecto, está ajustado a 0.5, pero usando su ejemplo y se establece a 0,3, me sale el siguiente resultado: 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

vi justo ahora que se ha incluido en el [documentación versión 1.6] (http://networkx.lanl.gov/reference/generated/networkx.drawing.nx_pylab.draw_networkx_edge_labels.html). – Maehler

+0

La otra ventaja es que un borde puede tener varias etiquetas y se puede colocar en estos diferentes desplazamientos. – Vikram

Cuestiones relacionadas