2017-04-12 1 views
0

Je veux utiliser package portable python, igraph pour dessiner l'image, le code exemple est ici (qui je pense est juste)python + igrph. TypeError: traçage non disponible

!pip install cairocffi 
import cairocffi as cairo 

corlor = [] 
for i in g.vs['name']: 
    if set([i]) < set(degree_15): 
     corlor.append('red') 
    elif set([i]) < set(degree_30): 
     corlor.append('rgba(255,0,0,0.5)') 
    elif set([i]) < set(degree_60): 
     corlor.append('orange') 
    else: 
     corlor.append('yellow') 
ig.plot(g, 
     #'C:\Users\Vincent Du\Desktop\degree_plot.jpg', 
     layout=geometry_layout, 
     vertex_label=g.vs['name'], 
     scale=1.0, 
     vertex_color=corlor, 
     vertex_frame_width=0.5, 
     edge_width=0.05, 
     vertex_label_size=ig.rescale(g.degree(),out_range=(1,12)), 
     vertex_size=ig.rescale(g.degree(),out_range=(5,25)), 
     bbox=(1200,800), 
     margin = 10, 
     ) 

Et il y a encore une erreur. Je ne sais pas comment résoudre ce problème, merci!

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-120-73eb4de82dd4> in <module>() 
    21   vertex_size=ig.rescale(g.degree(),out_range=(5,25)), 
    22   bbox=(1200,800), 
---> 23   margin = 10, 
    24  ) 

//anaconda/lib/python3.5/site-packages/igraph/drawing/__init__.py in plot(obj, target, bbox, *args, **kwds) 
    444   bbox = BoundingBox(bbox) 
    445 
--> 446  result = Plot(target, bbox, background=kwds.get("background", "white")) 
    447 
    448  if "margin" in kwds: 

//anaconda/lib/python3.5/site-packages/igraph/drawing/__init__.py in __init__(self, target, bbox, palette, background) 
    115   """ 
    116   self._filename = None 
--> 117   self._surface_was_created = not isinstance(target, cairo.Surface) 
    118   self._need_tmpfile = False 
    119 

//anaconda/lib/python3.5/site-packages/igraph/drawing/utils.py in __getattr__(self, _) 
    394 
    395  def __getattr__(self, _): 
--> 396   raise TypeError("plotting not available") 
    397  def __call__(self, _): 
    398   raise TypeError("plotting not available") 

TypeError: plotting not available 

Je pense que je l'ai installé cairo, mais toujours pas

Répondre

0

Je ne sais pas quels types de données exactement vos ig.plot() prend, mais comme le « TypeError » suggère, certains vos args ont un type de données incorrect. Et il semble aussi que vous utilisez Python3, il devrait être pip3 au lieu de pip. J'espère que cela vous aide.