2016-11-12 2 views
1

Je suis en train de tester igraph python pour tracer un graphique non orienté. Le problème est que les étiquettes sont coupées pour certaines raisons. Les étiquettes contiennent des espaces, j'ai donc dû remplacer les espaces par des traits de soulignement.Python iGraph étiquettes coupure

Par exemple: Si l'étiquette est Mike_Jorden alors seulement e_jorde est affiché et parfois ike_jorde.

Mon entrée est un fichier csv formaté comme N_Col des exemples comme une entrée:

Mike_Jorden Test_2 
Test_2 Test_1 
Test_1 Mike_Jorden 

Mon code est le suivant:

from igraph import * 

g = Graph.Read_Ncol("graph.csv", directed=False) 
names = g.vs["name"] 

# remove double quotes 
for i in range(len(names)): 
    names[i] = names[i][1:-1] 

layout = g.layout("kk") 
visual_style = {} 
visual_style["vertex_shape"] = 'rectangle' 
visual_style["vertex_size"] = g.betweenness() 
visual_style["layout"] = layout 
visual_style["bbox"] = (1000,1000) 
visual_style["label_size"] = 20 
visual_style["margin"] = 20 
visual_style["label_dist"] = 20 
visual_style["vertex_label"] = names 

plot(g ,"test.pdf",**visual_style) 

J'ai essayé différents algorithmes de mise en page mais je reçois toujours le même problème. Tout conseil s'il vous plaît.

Répondre

1

Je viens d'essayer un exemple simple avec des noms de vertex longs. L'intrigue fonctionne bien. Essayez d'utiliser g.vs ['label'] pour attribuer des noms aux sommets.

Exemple:

from igraph import * 

g=Graph.Tree(10,2) 
g.vs['label'] = 'Mike John Mary George NICK' 
plot(g) 

Les résultats est la suivante: This