Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plotting doesn't work on a clean install #38

Open
LukeWeidenwalker opened this issue May 11, 2022 · 0 comments
Open

Plotting doesn't work on a clean install #38

LukeWeidenwalker opened this issue May 11, 2022 · 0 comments

Comments

@LukeWeidenwalker
Copy link

Currently, plotting doesn't work out of the box for two reasons:

  1. igraph requires the pycairo or cairocffi libraries to be installed, these are not specified in setup.cfg
  2. Upon installing cairocffi, calling parsed_pg.plot() results in the exception quoted further below. Process graph also below.

I've been able to circumvent this problem quite easily by using the networkx library instead.
Happy to raise a PR if we're okay with replacing igraph.

@clausmichele I don't know who uses this library / who is responsible for it these days, could you please tag any folks you think should have a say in this? Much appreciated :)


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
File /opt/conda/lib/python3.9/site-packages/IPython/core/formatters.py:343, in BaseFormatter.__call__(self, obj)
    341     method = get_real_method(obj, self.print_method)
    342     if method is not None:
--> 343         return method()
    344     return None
    345 else:

File /opt/conda/lib/python3.9/site-packages/igraph/drawing/__init__.py:367, in Plot._repr_svg_(self)
    365 context = cairo.Context(surface)
    366 # Plot the graph on this context
--> 367 self.redraw(context)
    368 # No idea why this is needed but python crashes without
    369 context.show_page()

File /opt/conda/lib/python3.9/site-packages/igraph/drawing/__init__.py:276, in Plot.redraw(self, context)
    274 else:
    275     ctx.save()
--> 276 plotter(ctx, bbox, palette, *args, **kwds)
    277 if opacity < 1.0:
    278     ctx.pop_group_to_source()

File /opt/conda/lib/python3.9/site-packages/igraph/__init__.py:4166, in Graph.__plot__(self, context, bbox, palette, *args, **kwds)
   4164     del kwds["drawer_factory"]
   4165 drawer = drawer_factory(context, bbox)
-> 4166 drawer.draw(self, palette, *args, **kwds)

File /opt/conda/lib/python3.9/site-packages/igraph/drawing/graph.py:489, in DefaultGraphDrawer.draw(self, graph, palette, *args, **kwds)
    487 src, dest = edge.tuple
    488 src_vertex, dest_vertex = vertex_builder[src], vertex_builder[dest]
--> 489 (x, y), (halign, valign) = edge_drawer.get_label_position(
    490     edge, src_vertex, dest_vertex
    491 )
    493 # Measure the text
    494 _, yb, w, h, _, _ = label_drawer.text_extents()

File /opt/conda/lib/python3.9/site-packages/igraph/drawing/edge.py:159, in AbstractEdgeDrawer.get_label_position(self, edge, src_vertex, dest_vertex)
    155     angle = None
    158 # Determine the midpoint
--> 159 if edge.curved:
    160     (x1, y1), (x2, y2) = src_vertex.position, dest_vertex.position
    161     aux1, aux2 = get_bezier_control_points_for_curved_edge(x1, y1, x2, y2, edge.curved)

AttributeError: 'igraph.Edge' object has no attribute 'curved'

This occurred on the following process graph I was experimenting with:

{'process_graph': {'loadcollection1': {'process_id': 'load_collection',
   'arguments': {'bands': ['B02', 'B03', 'B04', 'B08'],
    'id': 'boa_sentinel_2',
    'spatial_extent': {'east': 9.992539570642537,
     'north': 47.73255902176489,
     'south': 46.82379186182021,
     'west': 8.259091264204697},
    'temporal_extent': ['2018-05-01', '2018-09-01']}},
  'reducedimension1': {'process_id': 'reduce_dimension',
   'arguments': {'data': {'from_node': 'loadcollection1'},
    'dimension': 't',
    'reducer': {'process_graph': {'median1': {'process_id': 'median',
       'arguments': {'data': {'from_parameter': 'data'}},
       'result': True}}}}},
  'loadvectorcube1': {'process_id': 'load_vector_cube',
   'arguments': {'URL': 'https://raw.githubusercontent.com/LukeWeidenwalker/SRR3_clustered_geojsons/master/AOI_clustered_distance_2/cluster_3.geojson'}},
  'aggregatespatial1': {'process_id': 'aggregate_spatial',
   'arguments': {'data': {'from_node': 'reducedimension1'},
    'geometries': {'from_node': 'loadvectorcube1'},
    'reducer': 'mean',
    'target_dimension': 'result'}},
  'fitregrrandomforest1': {'process_id': 'fit_regr_random_forest',
   'arguments': {'data': {'from_node': 'aggregatespatial1'},
    'max_variables': None,
    'num_trees': 100,
    'predictors_vars': ['B02', 'B03', 'B04', 'B08'],
    'seed': 0,
    'target_var': 'target_canopy_cover'}},
  'savemlmodel1': {'process_id': 'save_ml_model',
   'arguments': {'model': {'from_node': 'fitregrrandomforest1'}},
   'result': True}}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant