From bbe93df7f2b1c7b7406688e9f806881d18fccb2f Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Tue, 4 Apr 2023 14:41:29 +1000 Subject: [PATCH 01/26] First blobs of code --- src/igraph/drawing/__init__.py | 6 +- src/igraph/drawing/matplotlib/graph.py | 162 ++++++++++++++++++++++++- 2 files changed, 165 insertions(+), 3 deletions(-) diff --git a/src/igraph/drawing/__init__.py b/src/igraph/drawing/__init__.py index 5ae708ccc..ec1a8168f 100644 --- a/src/igraph/drawing/__init__.py +++ b/src/igraph/drawing/__init__.py @@ -41,7 +41,10 @@ from igraph.drawing.cairo.matrix import CairoMatrixDrawer from igraph.drawing.cairo.histogram import CairoHistogramDrawer from igraph.drawing.cairo.palette import CairoPaletteDrawer -from igraph.drawing.matplotlib.graph import MatplotlibGraphDrawer +from igraph.drawing.matplotlib.graph import ( + MatplotlibGraphDrawer, + GraphArtist, +) from igraph.drawing.matplotlib.matrix import MatplotlibMatrixDrawer from igraph.drawing.matplotlib.histogram import MatplotlibHistogramDrawer from igraph.drawing.matplotlib.palette import MatplotlibPaletteDrawer @@ -54,6 +57,7 @@ "BoundingBox", "CairoGraphDrawer", "MatplotlibGraphDrawer", + "GraphArtist", "DefaultGraphDrawer", "Plot", "Point", diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index 6673929ff..a3dd32de7 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -24,13 +24,171 @@ from .utils import find_matplotlib from .vertex import MatplotlibVertexDrawer -__all__ = ("MatplotlibGraphDrawer",) +__all__ = ( + "MatplotlibGraphDrawer", + "GraphArtist", + ) -_, plt = find_matplotlib() +mpl, plt = find_matplotlib() ##################################################################### +# NOTE: https://github.com/networkx/grave/blob/main/grave/grave.py +class GraphArtist(mpl.artist.Artist, AbstractGraphDrawer): + """Artist for an igraph.Graph object. + + Arguments: + graph: An igraph.Graph object to plot + layout: A layout object or matrix of coordinates to use for plotting. + Each element or row should describes the coordinates for a vertex. + vertex_style: A dictionary specifying style options for vertices. + edge_style: A dictionary specifying style options for edges. + """ + def __init__( + self, + graph, + layout=None, + vertex_style=None, + edge_style=None, + vertex_label_style=None, + edge_label_style=None, + **kwargs, + ): + + super().__init__() + self.graph = graph + self.layout = self.ensure_layout(layout) + self.vertex_style = vertex_style + self.edge_style = edge_style + self.vertex_label_style = vertex_label_style + self.edge_label_style = edge_label_style + + self._clear_state() + + def _clear_state(self): + self._vertex_artist = None + self._vertex_indx = None + self._edge_artist = None + self._edge_indx = None + self._vertex_labels = None + self._edge_labels = None + + def get_children(self): + artists = [self._vertex_artist, self._edge_artist] + if self._vertex_labels is not None: + artists.extend(self._vertex_labels) + if self._edge_labels is not None: + artists.extend(self._edge_labels) + return tuple(a for a in artists if a is not None) + + def get_datalim(self): + import numpy as np + + mins = np.min(self.layout, axis=0) + maxs = np.max(self.layout, axis=0) + + return (mins, maxs) + + def _reprocess(self, *): + """Process the actual drawing.""" + # nuke old state and mark as stale + self._clear_state() + self.stale = True + + # get local refs to everything (just for less typing) + graph = self.graph + edge_style = self.edge_style + vertex_style = self.vertex_style + edge_label_style = self.edge_label_style + vertex_label_style = self.vertex_label_style + + # get the layout + pos = self.layout.coords + + # handle the edges + edge_style_dict = generate_edge_styles(graph, edge_style) + self._edge_artist, self._edge_indx = ( + _generate_straight_edges(graph.edges(), pos, + edge_style_dict, ax=self.axes)) + + # handle the nodes + vertex_style_dict = generate_node_styles(graph, node_style) + self._vertex_artist, self._vertex_indx = ( + _generate_vertex_artist(pos, vertex_style_dict, ax=self.axes)) + + # TODO handle the text + + # handle the node labels + if vertex_label_style is not None: + vlabel_style_dict = generate_vertex_label_styles( + graph, + vertex_label_style) + self._vertex_label_dict = ( + _generate_vertex_labels(pos, vlabel_style_dict, ax=self.axes)) + + # handle the edge labels + if edge_label_style is not None: + elabel_style_dict = generate_edge_label_styles(graph, + edge_label_style) + self._edge_label_dict = ( + _generate_edge_labels(pos, elabel_style_dict, ax=self.axes)) + + # TODO sort out all of the things that need to be forwarded + for child in self.get_children(): + # set the figure / axes on child, this is needed + # by some internals + child.set_figure(self.figure) + child.axes = self.axes + # forward the clippath/box to the children need this logic + # because mpl exposes some fast-path logic + clip_path = self.get_clip_path() + if clip_path is None: + clip_box = self.get_clip_box() + child.set_clip_box(clip_box) + else: + child.set_clip_path(clip_path) + + @_stale_wrapper + def draw(self, renderer, *args, **kwargs): + """Draw each of the children, with some buffering mechanism.""" + if not self.get_visible(): + return + + if not self.get_children(): + self._reprocess() + + elif self.stale: + self._reprocess(reset_pos=False) + + for art in self.get_children(): + art.draw(renderer, *args, **kwargs) + + def contains(self, mouseevent): + """Track 'contains' event for mouse interactions.""" + props = {} + edge_hit, edge_props = self._edge_artist.contains(mouseevent) + vertex_hit, vertex_props = self._vertex_artist.contains(mouseevent) + props['vertices'] = [self._node_indx[j] + for j in vertex_props.get('ind', [])] + props['edges'] = [self._edge_indx[j] + for j in edge_props.get('ind', [])] + + return edge_hit | node_hit, props + + def pick(self, mouseevent): + """Track 'pick' event for mouse interactions.""" + # Pick self + if self.pickable(): + picker = self.get_picker() + if callable(picker): + inside, prop = picker(self, mouseevent) + else: + inside, prop = self.contains(mouseevent) + if inside: + self.figure.canvas.pick_event(mouseevent, self, **prop) + + class MatplotlibGraphDrawer(AbstractGraphDrawer): """Graph drawer that uses a pyplot.Axes as context""" From df01256a3553fcbf8b0677e02851f9eef1dec3f6 Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Tue, 4 Apr 2023 14:57:47 +1000 Subject: [PATCH 02/26] A bit more logic --- src/igraph/drawing/matplotlib/graph.py | 28 +++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index a3dd32de7..86e0647b5 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -73,6 +73,7 @@ def _clear_state(self): self._edge_indx = None self._vertex_labels = None self._edge_labels = None + self._group_artist = None def get_children(self): artists = [self._vertex_artist, self._edge_artist] @@ -80,8 +81,25 @@ def get_children(self): artists.extend(self._vertex_labels) if self._edge_labels is not None: artists.extend(self._edge_labels) + if self._group_artist is not None: + artists.extend(self._group_artist) return tuple(a for a in artists if a is not None) + def get_vertices(self): + return self._vertex_artist + + def get_edges(seff): + return self._edge_artist + + def get_groups(self): + return self._group_artist + + def get_vertex_labels(self): + return self._vertex_labels + + def get_edge_labels(self): + return self._edge_labels + def get_datalim(self): import numpy as np @@ -91,7 +109,11 @@ def get_datalim(self): return (mins, maxs) def _reprocess(self, *): - """Process the actual drawing.""" + """Prepare artist and children for the actual drawing. + + Children are not drawn here, but the dictionaries of properties are + marshalled to their specific artists. + """ # nuke old state and mark as stale self._clear_state() self.stale = True @@ -106,13 +128,13 @@ def _reprocess(self, *): # get the layout pos = self.layout.coords - # handle the edges + # edges edge_style_dict = generate_edge_styles(graph, edge_style) self._edge_artist, self._edge_indx = ( _generate_straight_edges(graph.edges(), pos, edge_style_dict, ax=self.axes)) - # handle the nodes + # vertices vertex_style_dict = generate_node_styles(graph, node_style) self._vertex_artist, self._vertex_indx = ( _generate_vertex_artist(pos, vertex_style_dict, ax=self.axes)) From bf3a18393088c8b9e6ea3f160c2d57a024213934 Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Tue, 4 Apr 2023 18:09:23 +1000 Subject: [PATCH 03/26] Move more logic to artist --- src/igraph/drawing/matplotlib/graph.py | 114 +++++++++++++++---------- 1 file changed, 68 insertions(+), 46 deletions(-) diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index 86e0647b5..562465422 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -53,7 +53,8 @@ def __init__( edge_style=None, vertex_label_style=None, edge_label_style=None, - **kwargs, + mark_groups=False, + **kwds, ): super().__init__() @@ -63,9 +64,36 @@ def __init__( self.edge_style = edge_style self.vertex_label_style = vertex_label_style self.edge_label_style = edge_label_style + self.mark_groups = mark_groups + self.edge_curved = self._set_edge_curve(**kwds) + self.palette = kwds.pop("palette", None) + self.kwds = kwds self._clear_state() + def _set_edge_curve(self, **kwds): + # Decide whether we need to calculate the curvature of edges + # automatically -- and calculate them if needed. + autocurve = kwds.get("autocurve", None) + if autocurve or ( + autocurve is None + and "edge_curved" not in kwds + and "curved" not in self.graph.edge_attributes() + and self.graph.ecount() < 10000 + ): + from igraph import autocurve + + default = kwds.get("edge_curved", 0) + if default is True: + default = 0.5 + default = float(default) + return autocurve( + graph, + attribute=None, + default=default, + ) + return None + def _clear_state(self): self._vertex_artist = None self._vertex_indx = None @@ -124,9 +152,19 @@ def _reprocess(self, *): vertex_style = self.vertex_style edge_label_style = self.edge_label_style vertex_label_style = self.vertex_label_style + layout = self.layout + kwds = self.kwds - # get the layout - pos = self.layout.coords + # Determine the order in which we will draw the vertices and edges + # These methods come from AbstractGraphDrawer + vertex_order = self._determine_vertex_order(graph, kwds) + edge_order = self._determine_edge_order(graph, kwds) + + # FIXME FIXME + # vertices + vertex_style_dict = generate_node_styles(graph, node_style) + self._vertex_artist, self._vertex_indx = ( + _generate_vertex_artist(pos, vertex_style_dict, ax=self.axes)) # edges edge_style_dict = generate_edge_styles(graph, edge_style) @@ -134,10 +172,6 @@ def _reprocess(self, *): _generate_straight_edges(graph.edges(), pos, edge_style_dict, ax=self.axes)) - # vertices - vertex_style_dict = generate_node_styles(graph, node_style) - self._vertex_artist, self._vertex_indx = ( - _generate_vertex_artist(pos, vertex_style_dict, ax=self.axes)) # TODO handle the text @@ -172,7 +206,7 @@ def _reprocess(self, *): child.set_clip_path(clip_path) @_stale_wrapper - def draw(self, renderer, *args, **kwargs): + def draw(self, renderer, *args, **kwds): """Draw each of the children, with some buffering mechanism.""" if not self.get_visible(): return @@ -184,7 +218,7 @@ def draw(self, renderer, *args, **kwargs): self._reprocess(reset_pos=False) for art in self.get_children(): - art.draw(renderer, *args, **kwargs) + art.draw(renderer, *args, **kwds) def contains(self, mouseevent): """Track 'contains' event for mouse interactions.""" @@ -262,32 +296,20 @@ def draw(self, graph, *args, **kwds): directed = graph.is_directed() ax = self.ax - # Palette - palette = kwds.pop("palette", None) - - # Calculate/get the layout of the graph - layout = self.ensure_layout(kwds.get("layout", None), graph) - - # Decide whether we need to calculate the curvature of edges - # automatically -- and calculate them if needed. - autocurve = kwds.get("autocurve", None) - if autocurve or ( - autocurve is None - and "edge_curved" not in kwds - and "curved" not in graph.edge_attributes() - and graph.ecount() < 10000 - ): - from igraph import autocurve - - default = kwds.get("edge_curved", 0) - if default is True: - default = 0.5 - default = float(default) - kwds["edge_curved"] = autocurve( - graph, - attribute=None, - default=default, - ) + # Create artist + art = GraphArtist( + graph, + layout=kwds.get("layout", None), + vertex_style=None, + edge_style=None, + vertex_label_style=None, + edge_label_style=None, + mark_groups=False, + **kwds, + ) + + ax.add_artist(art) + art._reprocess() # Construct the vertex, edge and label drawers vertex_drawer = self.vertex_drawer_factory(ax, palette, layout) @@ -392,9 +414,6 @@ def draw(self, graph, *args, **kwds): legend_info["labels"], ) - # Determine the order in which we will draw the vertices and edges - vertex_order = self._determine_vertex_order(graph, kwds) - edge_order = self._determine_edge_order(graph, kwds) # Construct the iterator that we will use to draw the vertices vs = graph.vs @@ -475,24 +494,24 @@ def draw(self, graph, *args, **kwds): dest_vertex, ) - text_kwargs = {} - text_kwargs['ha'] = halign.value - text_kwargs['va'] = valign.value + text_kwds = {} + text_kwds['ha'] = halign.value + text_kwds['va'] = valign.value if visual_edge.background is not None: - text_kwargs['bbox'] = dict( + text_kwds['bbox'] = dict( facecolor=visual_edge.background, edgecolor='none', ) - text_kwargs['ha'] = 'center' - text_kwargs['va'] = 'center' + text_kwds['ha'] = 'center' + text_kwds['va'] = 'center' if visual_edge.align_label: # Rotate the text to align with the edge rotation = edge_drawer.get_label_rotation( visual_edge, src_vertex, dest_vertex, ) - text_kwargs['rotation'] = rotation + text_kwds['rotation'] = rotation ax.text( x, @@ -500,10 +519,13 @@ def draw(self, graph, *args, **kwds): label, fontsize=visual_edge.label_size, color=visual_edge.label_color, - **text_kwargs, + **text_kwds, # TODO: offset, etc. ) + # Set new data limits + ax.update_datalim(art.get_datalim()) + # Despine ax.spines["right"].set_visible(False) ax.spines["top"].set_visible(False) From 7dc40b3552e8b215302422fc9ce1bb59d6075c53 Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Wed, 5 Apr 2023 11:50:52 +1000 Subject: [PATCH 04/26] Container artist with children creates, but fails to show --- src/igraph/drawing/matplotlib/edge.py | 13 +- src/igraph/drawing/matplotlib/graph.py | 626 +++++++++++++----------- src/igraph/drawing/matplotlib/vertex.py | 5 +- 3 files changed, 338 insertions(+), 306 deletions(-) diff --git a/src/igraph/drawing/matplotlib/edge.py b/src/igraph/drawing/matplotlib/edge.py index adbdfab89..607f98de9 100644 --- a/src/igraph/drawing/matplotlib/edge.py +++ b/src/igraph/drawing/matplotlib/edge.py @@ -163,7 +163,7 @@ def draw_directed_edge(self, edge, src_vertex, dest_vertex): path["codes"].append("LINETO") # Draw the edge - stroke = mpl.patches.PathPatch( + arrowshaft = mpl.patches.PathPatch( mpl.path.Path( path["vertices"], codes=[getattr(mpl.path.Path, x) for x in path["codes"]], @@ -172,7 +172,6 @@ def draw_directed_edge(self, edge, src_vertex, dest_vertex): facecolor="none", linewidth=edge.width, ) - ax.add_patch(stroke) # Draw the arrow head arrowhead = mpl.patches.Polygon( @@ -185,7 +184,7 @@ def draw_directed_edge(self, edge, src_vertex, dest_vertex): facecolor=edge.color, edgecolor="none", ) - ax.add_patch(arrowhead) + return [arrowshaft, arrowhead] def draw_loop_edge(self, edge, vertex): """Draws a loop edge. @@ -201,7 +200,7 @@ def draw_loop_edge(self, edge, vertex): radius = vertex.size * 1.5 center_x = vertex.position[0] + cos(pi / 4) * radius / 2.0 center_y = vertex.position[1] - sin(pi / 4) * radius / 2.0 - stroke = mpl.patches.Arc( + art = mpl.patches.Arc( (center_x, center_y), radius / 2.0, radius / 2.0, @@ -212,7 +211,7 @@ def draw_loop_edge(self, edge, vertex): edgecolor=edge.color, ) # FIXME: make a PathCollection?? - ax.add_patch(stroke) + return [art] def draw_undirected_edge(self, edge, src_vertex, dest_vertex): """Draws an undirected edge. @@ -247,7 +246,7 @@ def draw_undirected_edge(self, edge, src_vertex, dest_vertex): path["vertices"].append(dest_vertex.position) path["codes"].append("LINETO") - stroke = mpl.patches.PathPatch( + art = mpl.patches.PathPatch( mpl.path.Path( path["vertices"], codes=[getattr(mpl.path.Path, x) for x in path["codes"]], @@ -257,4 +256,4 @@ def draw_undirected_edge(self, edge, src_vertex, dest_vertex): linewidth=edge.width, ) # FIXME: make a PathCollection?? - ax.add_artist(stroke) + return [art] diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index 562465422..576584b7b 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -14,6 +14,7 @@ """ from warnings import warn +from functools import wraps from igraph._igraph import convex_hull, VertexSeq from igraph.drawing.baseclasses import AbstractGraphDrawer @@ -27,7 +28,7 @@ __all__ = ( "MatplotlibGraphDrawer", "GraphArtist", - ) +) mpl, plt = find_matplotlib() @@ -35,6 +36,17 @@ # NOTE: https://github.com/networkx/grave/blob/main/grave/grave.py +def _stale_wrapper(func): + @wraps(func) + def inner(self, *args, **kwargs): + try: + func(self, *args, **kwargs) + finally: + self.stale = False + + return inner + + class GraphArtist(mpl.artist.Artist, AbstractGraphDrawer): """Artist for an igraph.Graph object. @@ -45,33 +57,53 @@ class GraphArtist(mpl.artist.Artist, AbstractGraphDrawer): vertex_style: A dictionary specifying style options for vertices. edge_style: A dictionary specifying style options for edges. """ + def __init__( self, graph, + vertex_drawer_factory=MatplotlibVertexDrawer, + edge_drawer_factory=MatplotlibEdgeDrawer, layout=None, - vertex_style=None, - edge_style=None, - vertex_label_style=None, - edge_label_style=None, mark_groups=False, + palette=None, **kwds, ): - super().__init__() self.graph = graph - self.layout = self.ensure_layout(layout) - self.vertex_style = vertex_style - self.edge_style = edge_style - self.vertex_label_style = vertex_label_style - self.edge_label_style = edge_label_style + self.layout = self.ensure_layout(layout, graph) + self.vertex_drawer_factory = vertex_drawer_factory + self.edge_drawer_factory = edge_drawer_factory self.mark_groups = mark_groups self.edge_curved = self._set_edge_curve(**kwds) - self.palette = kwds.pop("palette", None) + self.palette = palette self.kwds = kwds self._clear_state() + def _clear_state(self): + self._vertex_artists = [] + self._edge_artists = [] + self._vertex_labels = [] + self._edge_labels = [] + self._group_artists = [] + self._legend_info = {} + + def get_children(self): + artists = sum( + [ + self._vertex_artists, + self._edge_artists, + self._vertex_labels, + self._edge_labels, + self._group_artists, + ], + [], + ) + return tuple(artists) + def _set_edge_curve(self, **kwds): + graph = self.graph + # Decide whether we need to calculate the curvature of edges # automatically -- and calculate them if needed. autocurve = kwds.get("autocurve", None) @@ -94,33 +126,14 @@ def _set_edge_curve(self, **kwds): ) return None - def _clear_state(self): - self._vertex_artist = None - self._vertex_indx = None - self._edge_artist = None - self._edge_indx = None - self._vertex_labels = None - self._edge_labels = None - self._group_artist = None - - def get_children(self): - artists = [self._vertex_artist, self._edge_artist] - if self._vertex_labels is not None: - artists.extend(self._vertex_labels) - if self._edge_labels is not None: - artists.extend(self._edge_labels) - if self._group_artist is not None: - artists.extend(self._group_artist) - return tuple(a for a in artists if a is not None) - def get_vertices(self): - return self._vertex_artist + return self._vertex_artists - def get_edges(seff): - return self._edge_artist + def get_edges(self): + return self._edge_artists def get_groups(self): - return self._group_artist + return self._group_artists def get_vertex_labels(self): return self._vertex_labels @@ -136,7 +149,250 @@ def get_datalim(self): return (mins, maxs) - def _reprocess(self, *): + def _draw_vertex_labels(self): + kwds = self.kwds + layout = self.layout + vertex_builder = self.vertex_builder + vertex_order = self.vertex_order + + # Construct the iterator that we will use to draw the vertex labels + if vertex_order is None: + # Default vertex order + vertex_coord_iter = zip(vertex_builder, layout) + else: + # Specified vertex order + vertex_coord_iter = ((vertex_builder[i], layout[i]) for i in vertex_order) + + # Draw the vertex labels + for vertex, coords in vertex_coord_iter: + if vertex.label is None: + continue + + label_size = kwds.get( + "vertex_label_size", + vertex.label_size, + ) + + art = mpl.text.Text( + *coords, + vertex.label, + fontsize=label_size, + ha="center", + va="center", + transform=self.axes.transData, + clip_on=True, + # TODO: overlap, offset, etc. + ) + self._vertex_labels.append(art) + + def _draw_edge_labels(self): + graph = self.graph + kwds = self.kwds + vertex_builder = self.vertex_builder + edge_builder = self.edge_builder + edge_drawer = self.edge_drawer + edge_order = self.edge_order + + labels = kwds.get("edge_label", None) + if labels is None: + return + + edge_label_iter = ( + (labels[i], edge_builder[i], graph.es[i]) for i in range(edge_order) + ) + for label, visual_edge, edge in edge_label_iter: + # Ask the edge drawer to propose an anchor point for the label + src, dest = edge.tuple + src_vertex, dest_vertex = vertex_builder[src], vertex_builder[dest] + (x, y), (halign, valign) = edge_drawer.get_label_position( + visual_edge, + src_vertex, + dest_vertex, + ) + + text_kwds = {} + text_kwds["ha"] = halign.value + text_kwds["va"] = valign.value + + if visual_edge.background is not None: + text_kwds["bbox"] = dict( + facecolor=visual_edge.background, + edgecolor="none", + ) + text_kwds["ha"] = "center" + text_kwds["va"] = "center" + + if visual_edge.align_label: + # Rotate the text to align with the edge + rotation = edge_drawer.get_label_rotation( + visual_edge, + src_vertex, + dest_vertex, + ) + text_kwds["rotation"] = rotation + + art = mpl.text.Text( + x, + y, + label, + fontsize=visual_edge.label_size, + color=visual_edge.label_color, + transform=self.axes.transData, + clip_on=True, + **text_kwds, + # TODO: offset, etc. + ) + self._vertex_labels.append(art) + + def _draw_groups(self): + """Draw the highlighted vertex groups, if requested""" + # Deferred import to avoid a cycle in the import graph + from igraph.clustering import VertexClustering, VertexCover + + kwds = self.kwds + palette = self.palette + layout = self.layout + vertex_builder = self.vertex_builder + + if not kwds.get("mark_groups", False): + return + + # Figure out what to do with mark_groups in order to be able to + # iterate over it and get memberlist-color pairs + mark_groups = kwds["mark_groups"] + if isinstance(mark_groups, dict): + # Dictionary mapping vertex indices or tuples of vertex + # indices to colors + group_iter = iter(mark_groups.items()) + elif isinstance(mark_groups, (VertexClustering, VertexCover)): + # Vertex clustering + group_iter = ((group, color) for color, group in enumerate(mark_groups)) + elif hasattr(mark_groups, "__iter__"): + # Lists, tuples, iterators etc + group_iter = iter(mark_groups) + else: + # False + group_iter = iter({}.items()) + + if kwds.get("legend", False): + legend_info = { + "handles": [], + "labels": [], + } + + # Iterate over color-memberlist pairs + for group, color_id in group_iter: + if not group or color_id is None: + continue + + color = palette.get(color_id) + + if isinstance(group, VertexSeq): + group = [vertex.index for vertex in group] + if not hasattr(group, "__iter__"): + raise TypeError("group membership list must be iterable") + + # Get the vertex indices that constitute the convex hull + hull = [group[i] for i in convex_hull([layout[idx] for idx in group])] + + # Calculate the preferred rounding radius for the corners + corner_radius = 1.25 * max(vertex_builder[idx].size for idx in hull) + + # Construct the polygon + polygon = [layout[idx] for idx in hull] + + if len(polygon) == 2: + # Expand the polygon (which is a flat line otherwise) + a, b = Point(*polygon[0]), Point(*polygon[1]) + c = corner_radius * (a - b).normalized() + n = Point(-c[1], c[0]) + polygon = [a + n, b + n, b - c, b - n, a - n, a + c] + else: + # Expand the polygon around its center of mass + center = Point( + *[sum(coords) / float(len(coords)) for coords in zip(*polygon)] + ) + polygon = [ + Point(*point).towards(center, -corner_radius) for point in polygon + ] + + # Draw the hull + # FIXME: defer this to the draw operation! + facecolor = (color[0], color[1], color[2], 0.25 * color[3]) + drawer = MatplotlibPolygonDrawer(self.axes) + drawer.draw( + polygon, + corner_radius=corner_radius, + facecolor=facecolor, + edgecolor=color, + ) + + if kwds.get("legend", False): + legend_info["handles"].append( + plt.Rectangle( + (0, 0), + 0, + 0, + facecolor=facecolor, + edgecolor=color, + ) + ) + legend_info["labels"].append(str(color_id)) + + if kwds.get("legend", False): + self.legend_info = legend_info + + def _draw_vertices(self): + """Draw the vertices""" + graph = self.graph + layout = self.layout + vertex_drawer = self.vertex_drawer + vertex_builder = self.vertex_builder + vertex_order = self.vertex_order + + vs = graph.vs + if vertex_order is None: + # Default vertex order + vertex_coord_iter = zip(vs, vertex_builder, layout) + else: + # Specified vertex order + vertex_coord_iter = ( + (vs[i], vertex_builder[i], layout[i]) for i in vertex_order + ) + for vertex, visual_vertex, coords in vertex_coord_iter: + art = vertex_drawer.draw(visual_vertex, vertex, coords) + self._vertex_artists.append(art) + + def _draw_edges(self): + """Draw the edges""" + graph = self.graph + vertex_builder = self.vertex_builder + edge_drawer = self.edge_drawer + edge_builder = self.edge_builder + edge_order = self.edge_order + + es = graph.es + if edge_order is None: + # Default edge order + edge_coord_iter = zip(es, edge_builder) + else: + # Specified edge order + edge_coord_iter = ((es[i], edge_builder[i]) for i in edge_order) + + directed = graph.is_directed() + if directed: + # Arrows and the likes + drawer_method = edge_drawer.draw_directed_edge + else: + # Lines + drawer_method = edge_drawer.draw_undirected_edge + for edge, visual_edge in edge_coord_iter: + src, dest = edge.tuple + src_vertex, dest_vertex = vertex_builder[src], vertex_builder[dest] + arts = drawer_method(visual_edge, src_vertex, dest_vertex) + self._edge_artists.extend(arts) + + def _reprocess(self): """Prepare artist and children for the actual drawing. Children are not drawn here, but the dictionaries of properties are @@ -148,54 +404,38 @@ def _reprocess(self, *): # get local refs to everything (just for less typing) graph = self.graph - edge_style = self.edge_style - vertex_style = self.vertex_style - edge_label_style = self.edge_label_style - vertex_label_style = self.vertex_label_style + palette = self.palette layout = self.layout kwds = self.kwds + # Construct the vertex, edge and label drawers + self.vertex_drawer = self.vertex_drawer_factory(self.axes, palette, layout) + self.edge_drawer = self.edge_drawer_factory(self.axes, palette) + + # Construct the visual vertex/edge builders based on the specifications + # provided by the vertex_drawer and the edge_drawer + self.vertex_builder = self.vertex_drawer.VisualVertexBuilder(graph.vs, kwds) + self.edge_builder = self.edge_drawer.VisualEdgeBuilder(graph.es, kwds) + # Determine the order in which we will draw the vertices and edges # These methods come from AbstractGraphDrawer - vertex_order = self._determine_vertex_order(graph, kwds) - edge_order = self._determine_edge_order(graph, kwds) - - # FIXME FIXME - # vertices - vertex_style_dict = generate_node_styles(graph, node_style) - self._vertex_artist, self._vertex_indx = ( - _generate_vertex_artist(pos, vertex_style_dict, ax=self.axes)) - - # edges - edge_style_dict = generate_edge_styles(graph, edge_style) - self._edge_artist, self._edge_indx = ( - _generate_straight_edges(graph.edges(), pos, - edge_style_dict, ax=self.axes)) - - - # TODO handle the text - - # handle the node labels - if vertex_label_style is not None: - vlabel_style_dict = generate_vertex_label_styles( - graph, - vertex_label_style) - self._vertex_label_dict = ( - _generate_vertex_labels(pos, vlabel_style_dict, ax=self.axes)) - - # handle the edge labels - if edge_label_style is not None: - elabel_style_dict = generate_edge_label_styles(graph, - edge_label_style) - self._edge_label_dict = ( - _generate_edge_labels(pos, elabel_style_dict, ax=self.axes)) + self.vertex_order = self._determine_vertex_order(graph, kwds) + self.edge_order = self._determine_edge_order(graph, kwds) + + self._draw_groups() + self._draw_vertices() + self._draw_edges() + self._draw_vertex_labels() + self._draw_edge_labels() + # Forward mpl properties to children # TODO sort out all of the things that need to be forwarded for child in self.get_children(): - # set the figure / axes on child, this is needed - # by some internals + # set the figure / axes on child, this ensures each primitive + # knows where to draw child.set_figure(self.figure) child.axes = self.axes + # forward the clippath/box to the children need this logic # because mpl exposes some fast-path logic clip_path = self.get_clip_path() @@ -215,7 +455,7 @@ def draw(self, renderer, *args, **kwds): self._reprocess() elif self.stale: - self._reprocess(reset_pos=False) + self._reprocess() for art in self.get_children(): art.draw(renderer, *args, **kwds) @@ -225,12 +465,10 @@ def contains(self, mouseevent): props = {} edge_hit, edge_props = self._edge_artist.contains(mouseevent) vertex_hit, vertex_props = self._vertex_artist.contains(mouseevent) - props['vertices'] = [self._node_indx[j] - for j in vertex_props.get('ind', [])] - props['edges'] = [self._edge_indx[j] - for j in edge_props.get('ind', [])] + props["vertices"] = [self._node_indx[j] for j in vertex_props.get("ind", [])] + props["edges"] = [self._edge_indx[j] for j in edge_props.get("ind", [])] - return edge_hit | node_hit, props + return edge_hit | vertex_hit, props def pick(self, mouseevent): """Track 'pick' event for mouse interactions.""" @@ -293,235 +531,29 @@ def draw(self, graph, *args, **kwds): ) # Some abbreviations for sake of simplicity - directed = graph.is_directed() ax = self.ax # Create artist art = GraphArtist( graph, - layout=kwds.get("layout", None), - vertex_style=None, - edge_style=None, - vertex_label_style=None, - edge_label_style=None, - mark_groups=False, + vertex_drawer_factory=self.vertex_drawer_factory, + edge_drawer_factory=self.edge_drawer_factory, + *args, **kwds, ) + # Bind artist to axes ax.add_artist(art) - art._reprocess() - # Construct the vertex, edge and label drawers - vertex_drawer = self.vertex_drawer_factory(ax, palette, layout) - edge_drawer = self.edge_drawer_factory(ax, palette) - - # Construct the visual vertex/edge builders based on the specifications - # provided by the vertex_drawer and the edge_drawer - vertex_builder = vertex_drawer.VisualVertexBuilder(graph.vs, kwds) - edge_builder = edge_drawer.VisualEdgeBuilder(graph.es, kwds) - - # Draw the highlighted groups (if any) - if "mark_groups" in kwds: - mark_groups = kwds["mark_groups"] - - # Deferred import to avoid a cycle in the import graph - from igraph.clustering import VertexClustering, VertexCover - - # Figure out what to do with mark_groups in order to be able to - # iterate over it and get memberlist-color pairs - if isinstance(mark_groups, dict): - # Dictionary mapping vertex indices or tuples of vertex - # indices to colors - group_iter = iter(mark_groups.items()) - elif isinstance(mark_groups, (VertexClustering, VertexCover)): - # Vertex clustering - group_iter = ((group, color) for color, group in enumerate(mark_groups)) - elif hasattr(mark_groups, "__iter__"): - # Lists, tuples, iterators etc - group_iter = iter(mark_groups) - else: - # False - group_iter = iter({}.items()) - - if kwds.get("legend", False): - legend_info = { - "handles": [], - "labels": [], - } - - # Iterate over color-memberlist pairs - for group, color_id in group_iter: - if not group or color_id is None: - continue - - color = palette.get(color_id) - - if isinstance(group, VertexSeq): - group = [vertex.index for vertex in group] - if not hasattr(group, "__iter__"): - raise TypeError("group membership list must be iterable") - - # Get the vertex indices that constitute the convex hull - hull = [group[i] for i in convex_hull([layout[idx] for idx in group])] - - # Calculate the preferred rounding radius for the corners - corner_radius = 1.25 * max(vertex_builder[idx].size for idx in hull) - - # Construct the polygon - polygon = [layout[idx] for idx in hull] - - if len(polygon) == 2: - # Expand the polygon (which is a flat line otherwise) - a, b = Point(*polygon[0]), Point(*polygon[1]) - c = corner_radius * (a - b).normalized() - n = Point(-c[1], c[0]) - polygon = [a + n, b + n, b - c, b - n, a - n, a + c] - else: - # Expand the polygon around its center of mass - center = Point( - *[sum(coords) / float(len(coords)) for coords in zip(*polygon)] - ) - polygon = [ - Point(*point).towards(center, -corner_radius) - for point in polygon - ] - - # Draw the hull - facecolor = (color[0], color[1], color[2], 0.25 * color[3]) - drawer = MatplotlibPolygonDrawer(ax) - drawer.draw( - polygon, - corner_radius=corner_radius, - facecolor=facecolor, - edgecolor=color, - ) - - if kwds.get("legend", False): - legend_info["handles"].append( - plt.Rectangle( - (0, 0), - 0, - 0, - facecolor=facecolor, - edgecolor=color, - ) - ) - legend_info["labels"].append(str(color_id)) - - if kwds.get("legend", False): - ax.legend( - legend_info["handles"], - legend_info["labels"], - ) - - - # Construct the iterator that we will use to draw the vertices - vs = graph.vs - if vertex_order is None: - # Default vertex order - vertex_coord_iter = zip(vs, vertex_builder, layout) - else: - # Specified vertex order - vertex_coord_iter = ( - (vs[i], vertex_builder[i], layout[i]) for i in vertex_order - ) - - # Draw the vertices - drawer_method = vertex_drawer.draw - for vertex, visual_vertex, coords in vertex_coord_iter: - drawer_method(visual_vertex, vertex, coords) - - # Construct the iterator that we will use to draw the vertex labels - vs = graph.vs - if vertex_order is None: - # Default vertex order - vertex_coord_iter = zip(vertex_builder, layout) - else: - # Specified vertex order - vertex_coord_iter = ((vertex_builder[i], layout[i]) for i in vertex_order) - - # Draw the vertex labels - for vertex, coords in vertex_coord_iter: - if vertex.label is None: - continue - - label_size = kwds.get( - "vertex_label_size", - vertex.label_size, - ) - - ax.text( - *coords, - vertex.label, - fontsize=label_size, - ha='center', - va='center', - # TODO: overlap, offset, etc. - ) - - # Construct the iterator that we will use to draw the edges - es = graph.es - if edge_order is None: - # Default edge order - edge_coord_iter = zip(es, edge_builder) - else: - # Specified edge order - edge_coord_iter = ((es[i], edge_builder[i]) for i in edge_order) - - # Draw the edges - if directed: - drawer_method = edge_drawer.draw_directed_edge - else: - drawer_method = edge_drawer.draw_undirected_edge - for edge, visual_edge in edge_coord_iter: - src, dest = edge.tuple - src_vertex, dest_vertex = vertex_builder[src], vertex_builder[dest] - drawer_method(visual_edge, src_vertex, dest_vertex) + # Create children artists (this also binds them to the axes) + art._reprocess() - # Draw the edge labels - labels = kwds.get("edge_label", None) - if labels is not None: - edge_label_iter = ( - (labels[i], edge_builder[i], graph.es[i]) for i in range(graph.ecount()) + # Legend for groups + if ("mark_groups" in kwds) and kwds.get("legend", False): + ax.legend( + art._legend_info["handles"], + art._legend_info["labels"], ) - for label, visual_edge, edge in edge_label_iter: - # Ask the edge drawer to propose an anchor point for the label - src, dest = edge.tuple - src_vertex, dest_vertex = vertex_builder[src], vertex_builder[dest] - (x, y), (halign, valign) = edge_drawer.get_label_position( - visual_edge, - src_vertex, - dest_vertex, - ) - - text_kwds = {} - text_kwds['ha'] = halign.value - text_kwds['va'] = valign.value - - if visual_edge.background is not None: - text_kwds['bbox'] = dict( - facecolor=visual_edge.background, - edgecolor='none', - ) - text_kwds['ha'] = 'center' - text_kwds['va'] = 'center' - - if visual_edge.align_label: - # Rotate the text to align with the edge - rotation = edge_drawer.get_label_rotation( - visual_edge, src_vertex, dest_vertex, - ) - text_kwds['rotation'] = rotation - - ax.text( - x, - y, - label, - fontsize=visual_edge.label_size, - color=visual_edge.label_color, - **text_kwds, - # TODO: offset, etc. - ) # Set new data limits ax.update_datalim(art.get_datalim()) diff --git a/src/igraph/drawing/matplotlib/vertex.py b/src/igraph/drawing/matplotlib/vertex.py index 3a7db0d90..00270a010 100644 --- a/src/igraph/drawing/matplotlib/vertex.py +++ b/src/igraph/drawing/matplotlib/vertex.py @@ -44,6 +44,7 @@ class VisualVertexBuilder(AttributeCollectorBase): return VisualVertexBuilder def draw(self, visual_vertex, vertex, coords): + """Build the Artist for a vertex and return it.""" ax = self.context width = ( @@ -57,7 +58,7 @@ def draw(self, visual_vertex, vertex, coords): else visual_vertex.size ) - stroke = visual_vertex.shape.draw_path( + art = visual_vertex.shape.draw_path( ax, coords[0], coords[1], @@ -68,4 +69,4 @@ def draw(self, visual_vertex, vertex, coords): linewidth=visual_vertex.frame_width, zorder=visual_vertex.zorder, ) - ax.add_patch(stroke) + return art From e310f201dbb76dfaa761470fbe355efbdc2f2832 Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Wed, 5 Apr 2023 11:56:05 +1000 Subject: [PATCH 05/26] Forwarder as in grave --- src/igraph/drawing/matplotlib/graph.py | 29 +++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index 576584b7b..6fdef7f03 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -14,7 +14,7 @@ """ from warnings import warn -from functools import wraps +from functools import wraps, partial from igraph._igraph import convex_hull, VertexSeq from igraph.drawing.baseclasses import AbstractGraphDrawer @@ -37,6 +37,7 @@ # NOTE: https://github.com/networkx/grave/blob/main/grave/grave.py def _stale_wrapper(func): + """Decorator to manage artist state.""" @wraps(func) def inner(self, *args, **kwargs): try: @@ -47,6 +48,32 @@ def inner(self, *args, **kwargs): return inner +def _forwarder(forwards, cls=None): + """Decorator to forward specific methods to Artist children.""" + if cls is None: + return partial(_forwarder, forwards) + + def make_forward(name): + def method(self, *args, **kwargs): + ret = getattr(cls.mro()[1], name)(self, *args, **kwargs) + for c in self.get_children(): + getattr(c, name)(*args, **kwargs) + return ret + + return method + + for f in forwards: + method = make_forward(f) + method.__name__ = f + method.__doc__ = 'broadcasts {} to children'.format(f) + setattr(cls, f, method) + + return cls + + +@_forwarder(('set_clip_path', 'set_clip_box', 'set_transform', + 'set_snap', 'set_sketch_params', 'set_figure', + 'set_animated', 'set_picker')) class GraphArtist(mpl.artist.Artist, AbstractGraphDrawer): """Artist for an igraph.Graph object. From 33e57b590ee109623baca52abaeb5195c6d5382f Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Wed, 5 Apr 2023 11:58:01 +1000 Subject: [PATCH 06/26] Remove unused import --- src/igraph/drawing/__init__.py | 6 +----- src/igraph/drawing/matplotlib/graph.py | 1 - 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/igraph/drawing/__init__.py b/src/igraph/drawing/__init__.py index ec1a8168f..5ae708ccc 100644 --- a/src/igraph/drawing/__init__.py +++ b/src/igraph/drawing/__init__.py @@ -41,10 +41,7 @@ from igraph.drawing.cairo.matrix import CairoMatrixDrawer from igraph.drawing.cairo.histogram import CairoHistogramDrawer from igraph.drawing.cairo.palette import CairoPaletteDrawer -from igraph.drawing.matplotlib.graph import ( - MatplotlibGraphDrawer, - GraphArtist, -) +from igraph.drawing.matplotlib.graph import MatplotlibGraphDrawer from igraph.drawing.matplotlib.matrix import MatplotlibMatrixDrawer from igraph.drawing.matplotlib.histogram import MatplotlibHistogramDrawer from igraph.drawing.matplotlib.palette import MatplotlibPaletteDrawer @@ -57,7 +54,6 @@ "BoundingBox", "CairoGraphDrawer", "MatplotlibGraphDrawer", - "GraphArtist", "DefaultGraphDrawer", "Plot", "Point", diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index 6fdef7f03..113dac3b5 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -27,7 +27,6 @@ __all__ = ( "MatplotlibGraphDrawer", - "GraphArtist", ) mpl, plt = find_matplotlib() From 794410eb6f944d503dfb34a764c547cc355a5ef4 Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Wed, 5 Apr 2023 19:32:03 +1000 Subject: [PATCH 07/26] Injected axes into builders should be used for transData --- src/igraph/drawing/matplotlib/edge.py | 8 +++++ src/igraph/drawing/matplotlib/graph.py | 41 ++++++++++++++++++-------- src/igraph/drawing/shapes.py | 39 ++++++++++++++++++++---- 3 files changed, 71 insertions(+), 17 deletions(-) diff --git a/src/igraph/drawing/matplotlib/edge.py b/src/igraph/drawing/matplotlib/edge.py index 607f98de9..3919f370d 100644 --- a/src/igraph/drawing/matplotlib/edge.py +++ b/src/igraph/drawing/matplotlib/edge.py @@ -171,6 +171,8 @@ def draw_directed_edge(self, edge, src_vertex, dest_vertex): edgecolor=edge.color, facecolor="none", linewidth=edge.width, + transform=ax.transData, + clip_on=True, ) # Draw the arrow head @@ -183,6 +185,8 @@ def draw_directed_edge(self, edge, src_vertex, dest_vertex): closed=True, facecolor=edge.color, edgecolor="none", + transform=ax.transData, + clip_on=True, ) return [arrowshaft, arrowhead] @@ -209,6 +213,8 @@ def draw_loop_edge(self, edge, vertex): linewidth=edge.width, facecolor="none", edgecolor=edge.color, + transform=ax.transData, + clip_on=True, ) # FIXME: make a PathCollection?? return [art] @@ -254,6 +260,8 @@ def draw_undirected_edge(self, edge, src_vertex, dest_vertex): edgecolor=edge.color, facecolor="none", linewidth=edge.width, + transform=ax.transData, + clip_on=True, ) # FIXME: make a PathCollection?? return [art] diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index 113dac3b5..7146ba8a5 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -25,9 +25,7 @@ from .utils import find_matplotlib from .vertex import MatplotlibVertexDrawer -__all__ = ( - "MatplotlibGraphDrawer", -) +__all__ = ("MatplotlibGraphDrawer",) mpl, plt = find_matplotlib() @@ -37,6 +35,7 @@ # NOTE: https://github.com/networkx/grave/blob/main/grave/grave.py def _stale_wrapper(func): """Decorator to manage artist state.""" + @wraps(func) def inner(self, *args, **kwargs): try: @@ -64,15 +63,24 @@ def method(self, *args, **kwargs): for f in forwards: method = make_forward(f) method.__name__ = f - method.__doc__ = 'broadcasts {} to children'.format(f) + method.__doc__ = "broadcasts {} to children".format(f) setattr(cls, f, method) return cls -@_forwarder(('set_clip_path', 'set_clip_box', 'set_transform', - 'set_snap', 'set_sketch_params', 'set_figure', - 'set_animated', 'set_picker')) +@_forwarder( + ( + "set_clip_path", + "set_clip_box", + "set_transform", + "set_snap", + "set_sketch_params", + "set_figure", + "set_animated", + "set_picker", + ) +) class GraphArtist(mpl.artist.Artist, AbstractGraphDrawer): """Artist for an igraph.Graph object. @@ -170,9 +178,21 @@ def get_edge_labels(self): def get_datalim(self): import numpy as np + vertex_builder = self.vertex_builder + mins = np.min(self.layout, axis=0) maxs = np.max(self.layout, axis=0) + # Pad by vertex size, to ensure they fit + if vertex_builder.size is not None: + mins -= vertex_builder.size * 1.1 + maxs += vertex_builder.size * 1.1 + else: + mins[0] -= vertex_builder.width * 0.55 + mins[1] -= vertex_builder.height * 0.55 + maxs[0] += vertex_builder.width * 0.55 + maxs[1] += vertex_builder.height * 0.55 + return (mins, maxs) def _draw_vertex_labels(self): @@ -424,7 +444,7 @@ def _reprocess(self): Children are not drawn here, but the dictionaries of properties are marshalled to their specific artists. """ - # nuke old state and mark as stale + # clear state and mark as stale self._clear_state() self.stale = True @@ -477,10 +497,7 @@ def draw(self, renderer, *args, **kwds): if not self.get_visible(): return - if not self.get_children(): - self._reprocess() - - elif self.stale: + if (not self.get_children()) or self.stale: self._reprocess() for art in self.get_children(): diff --git a/src/igraph/drawing/shapes.py b/src/igraph/drawing/shapes.py index d4ca9fc49..69d39bb4d 100644 --- a/src/igraph/drawing/shapes.py +++ b/src/igraph/drawing/shapes.py @@ -96,7 +96,12 @@ def draw_path(ctx, center_x, center_y, width, height=None, **kwargs): height = height or width if hasattr(plt, "Axes") and isinstance(ctx, plt.Axes): return mpl.patches.Rectangle( - (center_x - width / 2, center_y - height / 2), width, height, **kwargs + (center_x - width / 2, center_y - height / 2), + width, + height, + transform=ctx.transData, + clip_on=True, + **kwargs, ) else: ctx.rectangle(center_x - width / 2, center_y - height / 2, width, height) @@ -163,7 +168,13 @@ def draw_path(ctx, center_x, center_y, width, height=None, **kwargs): @see: ShapeDrawer.draw_path""" if hasattr(plt, "Axes") and isinstance(ctx, plt.Axes): - return mpl.patches.Circle((center_x, center_y), width / 2, **kwargs) + return mpl.patches.Circle( + (center_x, center_y), + width / 2, + transform=ctx.transData, + clip_on=True, + **kwargs, + ) else: ctx.arc(center_x, center_y, width / 2, 0, 2 * pi) @@ -197,7 +208,13 @@ def draw_path(ctx, center_x, center_y, width, height=None, **kwargs): [center_x + 0.5 * width, center_y - 0.333 * height], [center_x, center_x + 0.667 * height], ] - return mpl.patches.Polygon(vertices, closed=True, **kwargs) + return mpl.patches.Polygon( + vertices, + closed=True, + transform=ctx.transData, + clip_on=True, + **kwargs, + ) else: ctx.move_to(center_x - width / 2, center_y + height / 2) ctx.line_to(center_x, center_y - height / 2) @@ -234,7 +251,13 @@ def draw_path(ctx, center_x, center_y, width, height=None, **kwargs): [center_x + 0.5 * width, center_y + 0.333 * height], [center_x, center_y - 0.667 * height], ] - return mpl.patches.Polygon(vertices, closed=True, **kwargs) + return mpl.patches.Polygon( + vertices, + closed=True, + transform=ctx.transData, + clip_on=True, + **kwargs, + ) else: ctx.move_to(center_x - width / 2, center_y - height / 2) @@ -273,7 +296,13 @@ def draw_path(ctx, center_x, center_y, width, height=None, **kwargs): [center_x + 0.5 * width, center_y], [center_x, center_y + 0.5 * height], ] - return mpl.patches.Polygon(vertices, closed=True, **kwargs) + return mpl.patches.Polygon( + vertices, + closed=True, + transform=ctx.transData, + clip_on=True, + **kwargs, + ) else: ctx.move_to(center_x - width / 2, center_y) ctx.line_to(center_x, center_y + height / 2) From 6e24ea651a6c293ee42f5d0b16669a53574b9e7b Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Wed, 5 Apr 2023 20:52:24 +1000 Subject: [PATCH 08/26] Working except for zorder --- src/igraph/drawing/matplotlib/edge.py | 5 +++++ src/igraph/drawing/matplotlib/graph.py | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/igraph/drawing/matplotlib/edge.py b/src/igraph/drawing/matplotlib/edge.py index 3919f370d..04dabf22e 100644 --- a/src/igraph/drawing/matplotlib/edge.py +++ b/src/igraph/drawing/matplotlib/edge.py @@ -51,6 +51,7 @@ class VisualEdgeBuilder(AttributeCollectorBase): width = 2.0 background = None align_label = False + zorder = 1 return VisualEdgeBuilder @@ -171,6 +172,7 @@ def draw_directed_edge(self, edge, src_vertex, dest_vertex): edgecolor=edge.color, facecolor="none", linewidth=edge.width, + zorder=edge.zorder, transform=ax.transData, clip_on=True, ) @@ -185,6 +187,7 @@ def draw_directed_edge(self, edge, src_vertex, dest_vertex): closed=True, facecolor=edge.color, edgecolor="none", + zorder=edge.zorder, transform=ax.transData, clip_on=True, ) @@ -213,6 +216,7 @@ def draw_loop_edge(self, edge, vertex): linewidth=edge.width, facecolor="none", edgecolor=edge.color, + zorder=edge.zorder, transform=ax.transData, clip_on=True, ) @@ -260,6 +264,7 @@ def draw_undirected_edge(self, edge, src_vertex, dest_vertex): edgecolor=edge.color, facecolor="none", linewidth=edge.width, + zorder=edge.zorder, transform=ax.transData, clip_on=True, ) diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index 7146ba8a5..49fd0d9d0 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -237,14 +237,14 @@ def _draw_edge_labels(self): vertex_builder = self.vertex_builder edge_builder = self.edge_builder edge_drawer = self.edge_drawer - edge_order = self.edge_order + edge_order = self.edge_order or range(self.graph.ecount()) labels = kwds.get("edge_label", None) if labels is None: return edge_label_iter = ( - (labels[i], edge_builder[i], graph.es[i]) for i in range(edge_order) + (labels[i], edge_builder[i], graph.es[i]) for i in edge_order ) for label, visual_edge, edge in edge_label_iter: # Ask the edge drawer to propose an anchor point for the label @@ -469,8 +469,8 @@ def _reprocess(self): self.edge_order = self._determine_edge_order(graph, kwds) self._draw_groups() - self._draw_vertices() self._draw_edges() + self._draw_vertices() self._draw_vertex_labels() self._draw_edge_labels() From 9121dbb10b8491927b5d48af20c6df216350d701 Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Wed, 5 Apr 2023 20:57:57 +1000 Subject: [PATCH 09/26] Manual management of zorder --- src/igraph/drawing/matplotlib/graph.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index 49fd0d9d0..66e1ab30f 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -125,14 +125,17 @@ def _clear_state(self): def get_children(self): artists = sum( [ - self._vertex_artists, + self._group_artists, self._edge_artists, - self._vertex_labels, + self._vertex_artists, self._edge_labels, - self._group_artists, + self._vertex_labels, ], [], ) + + # NOTE: looks like we have to manage the zorder ourselves + artists.sort(key=lambda x: x.zorder) return tuple(artists) def _set_edge_curve(self, **kwds): From 8e63abd9ccacca5c095b2f8136b73615140f5457 Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Wed, 5 Apr 2023 21:33:56 +1000 Subject: [PATCH 10/26] zorder in the draw function makes children more consistent --- src/igraph/drawing/matplotlib/graph.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index 66e1ab30f..ad8098102 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -134,8 +134,6 @@ def get_children(self): [], ) - # NOTE: looks like we have to manage the zorder ourselves - artists.sort(key=lambda x: x.zorder) return tuple(artists) def _set_edge_curve(self, **kwds): @@ -503,7 +501,8 @@ def draw(self, renderer, *args, **kwds): if (not self.get_children()) or self.stale: self._reprocess() - for art in self.get_children(): + # NOTE: looks like we have to manage the zorder ourselves + for art in sorted(self.get_children(), key=lambda x: x.zorder): art.draw(renderer, *args, **kwds) def contains(self, mouseevent): From 9bb39625895355c9de42141c02d09989a3cee4ca Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Wed, 5 Apr 2023 21:54:24 +1000 Subject: [PATCH 11/26] Return artist in group hull and speed up sorting for zorder --- src/igraph/drawing/matplotlib/graph.py | 7 +++++-- src/igraph/drawing/matplotlib/polygon.py | 6 ++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index ad8098102..6bcd474ba 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -367,12 +367,13 @@ def _draw_groups(self): # FIXME: defer this to the draw operation! facecolor = (color[0], color[1], color[2], 0.25 * color[3]) drawer = MatplotlibPolygonDrawer(self.axes) - drawer.draw( + art = drawer.draw( polygon, corner_radius=corner_radius, facecolor=facecolor, edgecolor=color, ) + self._group_artists.append(art) if kwds.get("legend", False): legend_info["handles"].append( @@ -502,7 +503,9 @@ def draw(self, renderer, *args, **kwds): self._reprocess() # NOTE: looks like we have to manage the zorder ourselves - for art in sorted(self.get_children(), key=lambda x: x.zorder): + children = list(self.get_children()) + children.sort(key=lambda x: x.zorder) + for art in children: art.draw(renderer, *args, **kwds) def contains(self, mouseevent): diff --git a/src/igraph/drawing/matplotlib/polygon.py b/src/igraph/drawing/matplotlib/polygon.py index 9cbbf6546..0e10fa4c3 100644 --- a/src/igraph/drawing/matplotlib/polygon.py +++ b/src/igraph/drawing/matplotlib/polygon.py @@ -80,8 +80,10 @@ def draw(self, points, corner_radius=0, **kwds): codes.extend([mpl.path.Path.CURVE4] * 3) u = v - stroke = mpl.patches.PathPatch( + art = mpl.patches.PathPatch( mpl.path.Path(path, codes=codes, closed=True), + transform=ax.transData, + clip_on=True, **kwds, ) - ax.add_patch(stroke) + return art From 59e2ce514722345ab3a153e8e9b94ef2f9a4a2fd Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Wed, 5 Apr 2023 22:07:24 +1000 Subject: [PATCH 12/26] Update a few test baseline images, which were manually verified --- .../test_graph/clustering_directed.png | Bin 36425 -> 23399 bytes .../test_graph/graph_basic.png | Bin 24565 -> 22749 bytes .../test_graph/graph_directed.png | Bin 25533 -> 23715 bytes .../test_graph/graph_mark_groups_directed.png | Bin 25533 -> 23715 bytes tests/drawing/matplotlib/test_graph.py | 3 ++- 5 files changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/drawing/matplotlib/baseline_images/test_graph/clustering_directed.png b/tests/drawing/matplotlib/baseline_images/test_graph/clustering_directed.png index bd2235aa56e1f2decda6b0d4907ddc8817eaed1f..4d3486fe3173ae2f0814632c30485c2efd94a6b2 100644 GIT binary patch literal 23399 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 D<#A&W literal 36425 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≦)ess8d z{X&fHXz`LMf@uQ>2cT}>8_-aN6MJ*9Q5|X&-Y)#)@%`%0TKD92b2>u)hpF8k0-Ipc zt$7ia7>$a=M?R+?@<01e8|LeLd;6BOkfj1(ET{sG*wTXWxr5M6SJ8ohrjj+b9(&ds zl(vFY^X83^w9${w*SfaF&=Eym41QfdVk=yT@;+SLsUE3)OFC$7;gpHX`v7e2hWHBhLsRy_KX?g3Z&&UQzEBmJ>Gd~Dx$3;z-zHsCjy3G@L zKTTJUDSLOF!WXBu*b*M#GEtBEV=@f8SY?wm>HdL5}6Xn!A{GI61$EzQo!IUMo`4gLL8@1g92 z2g$oHC%lh0QC4Gr)(_-bbpAK462BA!*A=&KJTA(8%DKPU_R?p81L1dxbpE;AvFW#q zPCL^n9!u&{ut5v6Cu#;NpHn}%zo4XCvoE?S9Mxa%6>@=uz24nvD#E_?n<*Vo#El=R zU-|u1P3>g4PTeq0L*sq9R}Ikp*fA*4O6z_5tnLIkV{Q68C&&1x50LIw5I$%RvYXc) z=s16vzsus)51Lhu_`ofyQ`~@#>2DfQu&3WQSV&|PTqt~?aLLHGPdgcFnM6)h@G0Gj znpwGmeKf1GHfd_hG1csHBxVpKy6?HUP$5gWvG^kfW!Kj_&U$xy^@T0^<%%Hot4}Wn zB!}>#2$6UD1`9UEJ-|2%rN&uGa=G`NvF2vW#iM6ZQBy8apNNXQEU>^ zOErx{(P+CJ{BpI`2^zRn&eNm4LW7-QeYKVvrMN#HYyo}5u44o&5!!cGybCTxQUV&5 zmR-w~rR;x6MZls(MCO6jjbBpXvoD?iBnlW1M7GT7sc>q(rIS?~NLvMU70>>TCcuYW zb#BnJ+&}ejl86n)r>3SPzLV-h?y(zxsfeL{)n$6in8U{&*H*$u@diRR9jJ?Oq>LIT zJ8g@L&uA}e(YDj7s$xEccH%8cpF9Kpmn#drx+kyjZmQJJDkpzd1Q*vEqtrKsgafHs zZ-U*p#RMZA#%k~$g9>x$lUy{xfkuCNf+Rhd5ySR~NXJt}egso3X=ZKY`@6cLo5(_z zENAT83W{KlpW^hX^FHZaKhE$3;{)*f0D)jg&_Y8&`CX&K4)lL6C zVs^EnEA$bwYmz2~aHWT)&IUxM+_@n_s&RBZwvfJ2D9Aq=sBPg0 z#FcBnk-Hfk7q}GGvoa$!wJePhtaNu6z-XIo9ra56XLc%FaKNaU*(Uym#`Z`9X*I{a zHBn~rUQfyn*4ua`2ngXW$*IUcfzSYUMWC9@S7N^uArc!K0;x%&0_x8MGR z>OLnRf2{EGl?y~tJWR4wQ3OJ!Rz){3e%O0p{lIOMQ|HvrH1II6(`%`oLWQEq_3tW!Tj2&V<;$<8JIz|kbyay3fs9W_gI%kzc5D_I+5|?P8@AVF5A)C z*Y$nZZev2HwnbEkh6Ufe2FbQkCivZ-DWvMPO9MM=C7}S+6~PJ|hVmz{kIHcvK}c}C zMY6px85dN)yWK}GZO;aVtycCrgqf0Y^w#Y$A>nfY4X5gPtYAuTY-&pM>+|L8|73&h zZ0V-qVga*@=h@)A?SB`Ya0`>2_evsJ#h?zWvimy7DYh?!dcu|!CM85_P&rF8<#lrw z%qiAi+gVdy-*5KQe5aBOGzM%<6dK^5WG0(WrJ$w;wY=43Xo+r;bB@)isMVi- zJ*-~QsYxoQEB5&Lujv}qFjp|ed0(bRO(V#D3Wo+Cr+^j=P-?r_*>SX@qR>g551~C< zJ>4IfVB_tQqyG3 zyMI70hYbJX{){7zjJ3Nd>|^Q|z3+2lHN0IjU+cXl-*96#+qxpx5L22U4KOq}gNAQ| zbQdu?NO*bT%-l@vvRAUov9qb}Z_ zUgzVl03OsWK@mt16v`i%!~_WQ>zmMt7wGy63-}~Q&vFVy zBR0;6$akP$pO&_iX!NnAtySn`GRS>?+~a^xJRzK%h!&SbpvR_v=vwEh2C)h!g(%ag z_hdju-PXl>9y?oBws5$igIF@;Tu&w^VUU{LRM?=C^g{`Zy^Xn|DWu~^ijgh+Oo0W` zUnp~hUfz`43cmWNuA=B2)XtN(W5?7F-Lw}d zo3~*3MRZ5)i`eSTYE6A-Eim_%X<>nFNcF~L8=ajBpN;^fimu7Y($^u(n5*%)B=#sY zcptP8Uk4VOPNoI%gkd(_;!CaR3w=&*g=&788PczT1-pn_5#DT))H1-m>?R2-vl@I0 zAXRjIe_CvP*fivMZ_DR>1cGe0sl=>vq!RAy(v|2m|C;zFF$oY`X-93b7Z*KtW$qJN z9#;iF0+oy<7;s>5Yh1b<^cyr=J8oMWealkj87}ez1=BQ2{6l{QKlY@mhM{hGctO z&?PGpjSLR9o28-I8g`v{axQS@=8`V=e+R&LxX6iRxY8quCo*c}%nd~P zA-&nh^R$tVFHhvt&r{H=p6t|ES=)|`Z-H!+??S3_4>p$B8)GcWKmE$JQo z$zD^k8Zu*2Rl@b!*XIN2`6cf)X?Z_2uT5JQ)-!-E`rqsj$p)GMX;+3xg2AX;Mx>}+ zJLOd3Ej**6@j4)^G*2N7-URy|t@(pl#_Hu)r$=GI%sIerISE|U`DLI1A13$AO%&n? zS_9vVeSqbtfByz$qpAsF)Kj?j>F4U4=l{U9M7w5Q z#8N9`nld8**asodTa?b<(vT}{P0-Q|rb+##>_sb|4GWm0r{fGqr}k*R7}NqD{^ZG= z`@7DEplk*KIvfkR9NU?ivThMFL-0*_Fa}JA*=y7hdY77$eWKt>mtSt%Mp6_~}V{i?0IFn~PB-JyBGQuNF-C#MJqf(4M3FKpR816`=d*3LzH z0kK;#bCHp-{O{k5Rm`(MlJ76OalC5x4#+qp@JMke$y2TnAi2S~TKlc@X4mr_BBB4n zyDl582x;;O?-zh}jX;T)a>fpH8Ij13uAY)nhub)frgXLCmhf-0vry?@HQ&53X}|fc z$SE7zHN?~Iy=%xFqTzwV`*KeXe|>d+0Rw%F&FE!Tr3dy(gH#}fz~B@WQ~2k=wdhk z-vr~C#ALFkS*Jz3TCtgwaAFnEnHK)!WC8oZ#qI9=3&FJ_)xG;U@1v6iR{RR2KuDcO z$1sUP7q6CViaN68;ygLaL(fuknDsMJ?3BI#XWSm|6mE1&2-qZmGk+EMH#nYs&lLu9!tyc0C08vtIW++V<8LU+ zt{kqGsRu*sNhm5kpF8>bz_0#N>8AU3OSb|wku&XJETQ$|Ykb(hg}H3~4=*)yp=RKo#@sU(6EW44VWaqM()epBg(0)Yv+8fBx3kJ^s(kn|Uk1$+tM3dy1#Jtf`wE za)}SrO`uJgGhTn#_2=uexjE=e^lK7EiVR*7XFUS6H8}G>uz2?Kl}EvSB!?&}EOh$O z$r0Y%M)(jde^yah|DVU>hkdC=qoVOb1m)Jy%FNEc=8hu^f(o&7yV%w4u%!*JsG%&{ zN-1{uh$$IuY>*@%&Hy@LTwI`yZbA$lWs^5y%MuKMxIF_3QJ(+5sI_|icU_z&3}|jd zuK=JtACeMuPGq~Yxiw4N_iUAf-3#mtofrqFBhVESK$GXdK;IZ%P_8Sepa54`{tevD zp`SxEyq_v-M}e`#_w?wbnE2|4Yjvs>*um&4!1oFxD=<3P!kxXlEMHM6`k%1%zT+$o z#zs304N>sQF);W^%=XtEmD_Wd!MvE;w^@{<`*SWpL}5HVKc?E06CqZsQ2^w1aAU`9 zMG#;pbnEOjA!C8BB}pt800U#4_M1h<1BO0HDJmMWe$IZL#_g0~7bkn@R|HU~UjRKQ z*wYh`3o2(`;{)xQTqd&(4fHBi4Q(qxA@yD8x7Y2$=f=*%_MGlD-REX&s@H!Acto<8 zC1nV&F77*Bt@fafSZ&63UA{Q6guO^+3d)bA2NlLhI?{`D#6eb9T6(KfqU$ftu07;F1&;7pBLvo_#t zSqo5{x$uwoy@VWmGs208;#&PbMHc73u{wv$PnMYc^TPl1C{f|wKQEyC`-Sr|is=C; zqm+bQ(S#b$EOdc~6BBO?H8e}CH=fUKZi@YbBK32J^7fq6@ZwZZ@rp@^RUIx@cpn7Z z`Sxv)U@L(55+)-GjNllr>VR|mOSjng*%m0PgM$sjRtLkHLPB7dW8$!fpX4h2J)Mtp zY%6j8l!GQlbTkxs7Js)Q@*&~urdfra+H|vzUtj*zyK*i%zs{8MId}I zowEK4&wo?-jyB(w(kk!#BQx$;)frh!MBX?XN3=uafVlN{$Fv3o&~o@8iKRUf@O3;R z&baAlQL3glO#X=ZqEk>MrQzi%MV3JY3%E>uu-eDFdp&TLyyp zB)p0VTZ5d(9N^yFUz-LM_~JXL05-+;UjeJ9a2~Md?bG=b5|Cf1wtzpOhG$8G1Hh%7 z7S#B=D=i`~2pe}_;Yw-$!-)krO;(3-M8<%E6)6oVY3#w8G*H6ls06Dw1)F#+)>U!W zNyM6sU19`MJrsPwWxXN8phwbQ#lza+|E@~>H6Mb?lS;RICTV5{V9wzz?e1k-T_BTz zi&3giyVT#krvfq54*=?Jkbb!lfx{DUN5;ApwcLtnLBig2{1v=qk56WDn8=-|IV2cQ zv8?}oL!PpscnHkADA+p!b>b%K`nfvsqi4QjAdeT|cm{{)GEcnt01pBo3kD$W%2WE7 zKpZ_1L(L3t0xad$-rNJ3_U*+6S3VEQl(Y#uITg|Jb_3qx9z>C;{2N{u2 z6$9_oErRMKDynWqq1RxZ5;kn`xRH~do`&;tcJ$>^-vy6It?QkDVo6+>wto`$H_AJ2HvNcb#wJvgyUKb`McawDU708Y{WtI>! z!N~AQZz2Qt7N?Ik@Cap)_?~BV7lXC_1|2P>O%oNIm={ciu?zD@%xY_2jsrP(>f5NK zw2h}-l*wSg zwtVe3I%Ue__Uyc{FuT7xx5h?<$OOm5%FgLYhL00Z>ZRpy(Vx9xm1DN`ga*euny2d_ zoRw!Wnr^dSYD69O?I&KZ|H6yq+vzd|uOLrT0+}p^AQ@yb;yWPcLn9H{XjyM>sUfLj z0g8rALRWXml?^vHnuQ_XHfNk{Ttf!JWj}8Mf+W;@@wLSX z#YhII0T!e@KI~!r{wWgZdH{ArcUO!L+gSU`Kl)y6M9Vy7z2ohQVMJrhFzMQ*3qHTi zo>`ABjQQ`bSgkP>jo|YW)1SkHJ4r0sVVf}|ICxcZYj;F)@AOE|j*dr|G;n`XjH&Sq zCr^^)56xwP(^f|9%9qY))*>g13nYDFl+bKBaA^bWpP&qm{E023kiyu3TO|ICeZHwg z3%&6D@#!=lZF@h zG8Jt&f09eE5z}_BaLW;D={tfY5958cAsHz@xS6P+|2JXa-VLLsglt+|F?z?NaxR2Z zln7fZ|M3=H{kEI^Wm>1zhO@Dvn4NvM;gWAdzmQ8{?B%Y!Kq^kLI7qPjuZ`*S_GY3) z6&2lZmJKFGfMh?`d3<0oo+zAsN&I=n$Q zr52DsofSiW{8Sb_Z_%AU!8|>E@?JiJ@BAy9G(10V16`peF*UL&A)m*V_!GtZDPJW} z&7ZCa|KR3Y@|LHjEC#K2V86q_$BF*wZeJm~o?;L$7G(g2>vfoCM7|I>?yj27y&`aK zcxs*R&Pxd=Ip4`H^*eupmMI_!srtBk>QSI7LML)ogcwF0GN;#;>8PYOkR%QTqrkWj(&UK zWo~6|KDG`R1Pw$;;WKtC%n(gB(d`ften31mw4Nnn7Z+;Ac)R~Zg^SGuex4TV36?)% zPIdvsl7H`mfidTkJ6vX#WZBwV%{yXNlWBo61)!=?H*y>ZIoh4x1h-FejoFT}P(*4F ziM_dw{+Ll)yXI=YWb;w$o(~qB*ulkMh}8~1-JzFKddid>^pafi7l0?QbPgHv`p#ui zaEH3CQjf1$pYKfpx#Q)lDx6Q06Z%ic|6P-dHqH~sEt4~bwQg%OPhGz)&cyN6>gk>Y zm>ZQlKjQ;NkGf8fnl%+C>N5y7KZNKvx>O{B9@(;YHrpvy!Ln~c5}>X&&M!z|I->uR zN85o@F(4bxRKA4FB&$YA{ zw<#r1+PQ~p@%{vganG&qwNs8y%$?&W_F0B8E>2_g7T_ELacW!+xZk(4s)8fKpa@TX zygIku$k*)T`}HGT@)|@3Ve`!7hpsE_f_Q}B8**}wb(R_)|8*LF=6|fMQy9)HCMEX4 zM?6_gi#h9uB1RaE`6JwuKe5YQ;2j(QtaekBsmV|#ANrja1CN!27h0xtlIG5oA93SX zP`wg@k=!a$Ro<@MJ$p*mBC8=u&nR7(?L6`ffzChG4X&Gkc_eBY3wK-v5mJMOc@_ja zV#(FwpI9Q4uxTn04FYxk{HYRuCb(x4CzgC!H`y``TQF&#YxbY|9)NbGr2TI*GLLu1o(c*Z zR(z4wkgXv1UUn9J3>cjb_=u;tGZ&clNLsYVx4!!9mVJJQoL&&Q=Sj<@o4M=Sf9bRv802G~f1-rUW%$)Oy?$3>vu*%x z91)!!^*xHN9IN$iW9~d1Y8ZyI_6Rl_#f6^X5G@^4Ci+SEflKb+8#gA=+IMUi;*#Ay z*>zvC{e!QZxI`MPb?ux58E5lq(aZyawGO(XbA2(~2WHEIOGDe_ygFbOLR9K%z*lh9 zai#30!T!vpFZyM{jDE7@L^oI{?)iDkkWz+M{U~PCBG16F0(T?EY<2F-IUL-`w(qja z{v~|ldxej07^86`4C|2{OmKb-X})SF`4FG;-~#uXYMhtj>%8xPp(^8sxZx7Box)@l zPRPQ&MaI@0U1qHj((l2vgVRv{Wai3>j&v|k*x9OdMN}5X5*zkbJLub(?xCJ#te;T^ z;^b*GU5(p6EtZ3BE#38J?)L51x-CL_&(vKGY27@%xq+SQ@+^LN3)B}c>Xh$>;i^7u z+jp~-non9Pq==3#x*?JHe#;Rgi{Q7xALSmBf?ut$uhKgW_NmP0Y47j{KR9sa6v704 z58^eUL=sN!=8I_&!%$Eg>3}vP81`{l8QBY}P?Efhb5M}=Gk+Xkg<}I(#HpJINY3+!)0{pnF7iD&AULA5e6vFEQw_c8?L!i+oNu5NJEbZ;!7hOulLvEhSn@r)D ziC5}Qe;XNF9qRctfga2}`allJ5CP`%Jd3Qg z>oo5?FOkF9bTb;46kV6Z0%a%wMZiEz20ja^62#(wSXX&WA;rJ7-rg6qej=k$@Jhd? z6I|yK1i6XKMf6`<*_3WmYCh^R>X7ua#u5iu?{4s zi0)XA#CmWln>+?HX|{Hu#99+xL`Qq*uS5UVU&cY)X)n(E4@f!WV-4*GLzSY4a7QDF zg&rR|!iTBk*~x@s)j-<8|9P2*n3`OEqwrk84Cd|p-uX=5mJgP!^R*cdXzCS%BZMax z+j}#M%t&fC13_u^8PG8RDHj#O4D-CfFL7ksclp$b0t*2%N04=@!sVxkID=;a(b>;d7>5VX^539Us5s4g3a^vvN$#tf z)}L0-CmeNd9KOzU{)*R;HdKelwT06xpg1;X&fxv+|8~)1ZtN&`Y#I96itwv9bES!y znmRq4L|3{M-iP6XTLIFN6TY&b`bsSFpr#wa2)gbAz?-h?af0c`^dA_4oy?d8A^s$!Dr8h0;>K$L zGuiarqM>M`NNs5uk5C&AODW~%U^f7R* zyB^>YmwB%K0^-9RWjG?g?sLGK@WVVo=F)Qz7tZ6>P{uSD>w(McTcI=55qk@mRV!W6 zUCF)x<(fi(g=5(7rSh-4`91XAs8f%{ku5##d{2r$P>vrx#($FjBUjIQCIP@`A?7UP zr>wyfK_Do?5Kv|4=oX$-?wwyv5l85mx?wixbF~ zu6xXwnjQ{hU{r#>zEF{_L;!{JtS{quoYnY7-zQf`Kw|bkjUV-^r`%X@AUYmP294w| z4r!D+^P#{)B04_yT`LjC?A;G>XO4Er;$3fm3lw~f;FgA?K^apxVt&QX{r%J}l^^|t zZ_x=Yaq(T6GTL7-%^tqn8i{>Nyy)hsbLp%_O&HW7QUVlMj`<3g~9*oQ-BYsi>sLDtt`6zsBx$m*Mq? z3#CWy2n-c~1SX_d2xZw`Y#O21TmR%5cN_U6e4TgnJ~{uaS+PF;cOA&jFmM{t!O4$9 zD5BYsl|=!aFgAQ|vq&&B3fuM?>;&2cKAEW@|2|F?sR=%LA}3$Inroyus2-TR=V&M! zrX3i|;=&1(#ZOUbp{R7t;iMDgtybL$y|my!|DLIn9UO*`v89ft=0@L4YRb93!mn@r z%cmUTX2k#e8Ly|hWus=U@GKWz{`rX%!y&Sz6r@SsbaK*P{WBMesTFo8JZcN1D< z+nz+mrHMS48h|W5)e!l1{iN0*5B1z}Sk#0@ngCHH;CxB);Pb0y^LM%pJ2D0`SOCPG z^FK8S=tBMY&x1~V$F%(tDqe-fF?m7M28J0p)0wYd|HGcmkZWe1dqM$e#rAVj%Hu(r zovmXc4nh~0KWhL6t1NN0z8h$SAez+G?$cD*B%?B3fYucJabwS zf}d;qL-F%_aLfKxzT3V-lM~3WJS&qBL1TR!7K~x+Q?YXuW_(^Jy2{Jo2Dl-Rr}x?a z{-P0v_qi|+nlMu}ONXUSlLv{L0dnhJZ4k#|q0Mh6F7lTRU+pnvG=}5(&Z=o1siC;pgx)LCd zvw)98O(eQ=B-$vDgiO2{tw2ChP`W^Z zBNInqlJv-T2##-Q&j{7w3`PE;&kZ=cb5!}YQb!0su?u25Rg_m zXpa;weueKMgUmPGU*U(@uL9LBkPpvd2$z zoaDIq{7=X)A0IymPtW0d`sEih$O>`wqd+@rT6J|s5)yIii5>L{%3ueV!z+VCeXwLDo z1WK=k9y7Pf(`e$3@UZdObYRfDIEBQ~=iXfEw}vX`eEph!g3C#Hr7`)mr2r}!<6w|G zQo>QO%WghOa)!z)AxE3}&xwBz74P`s@9wzuvKKFooVf$z_;`JILMA4FEUt8VNZo%2 zhnh2)OC4@9R52iMBj3>nf=OFP8(}rnK0ClIJyozeleV{61M}WjjWt;%F!HT?e0=vG z-Z4i%e=Kvwlk`KxDnxbPpy9>-ZxN|6L|t?YU8X1|NJRqK72VDavl=Lf4_o| za4nA$;M1Eb@CQ%~tX8-n2Ll+p5(k8QMp9B<$frs_eFH8J2a_-KIBS{A%&I%HeY(v} z9Yjo5nY|Pi#cdqtRh?F4OXt`H5A5JN6CQtQqr+_vGP$Rqo#Q zb8^NWN=``sLtYn=WQK2Ip+ss6ly0WB*{OFB1#)psBVPEnQ%iOJ*0^@$ObH)XFu5l( z09A+J`rvJ9DpXu4yYqZRq*w9`6z1`rTY1{foW*|-mlld)F3MePJi~kovj1@|ulWHX zKix%h4mh@6o%ox< z5yc<*UQ=}l))Ao}(~tw@HBKV`cBnlp>)A~bf)KrE)>@vG=h;pdK78n^P^9G{0S!5l zkpjPs@qM%OSeeNi`982mn+J{rU#v0C6%9=zz_I50C{2uzW~z?fW^zJ>xxUM_=8Hr~ z!WzmB7qMK2XYlcCg z7$ee4GE&z9hwaP8g9O@ooydjQk(()LO*Hk9qFnuiQ1M+dt=obRxuJsxR1z3057kwP z?o@3q(u`GLpvdFb_bEFt9pv{5K{z88e-nb=5c#rPQ@w*Cvj2O>my&A^UG-(f8b)te zUl|y;#=(>!!*Pl5BSJ4Fr8Qh$OpCi+b96`y!V|Uxgxmh?c*qRHSyEr`dljyId+rFr z&nr4i<`1*f2yGZ^RMC_Taq@QmkkMi1@b=gzaM^s*$cViEA`(kahVd~GpH;m7S+OV0 zz7ieX)12o}wF?Cg7uZ-jTL3pGL;Q+x_Fb~wfrHZ%+!cgELMw-R&u5rfkCDQ&#GQ(S z_fEYMPI$1;o6%9Cyg01UcW^HB{d)7eiwnb5jGk{Oxdca+^i8R5youp!4>)W3^1Hk@ z^3H;#A%gP7dU%0iHbAscb(guVv_Jr0F=BBn$EJu{CRHin03>7MEUT|eUJnb<%Q}YH>W>aK z3~GIcT&FBezCv+hr3<4|IG~sRQRA{bku=0p9GOK7x8P&d$lXWp{C+(I#msyFm0HNK zSf!CNP=<|=N@oQh$o;O%F*6b}b;re>SE;Axj^cJnxGw+BeHp3t^*|CE_?lOX&6`aK zh!7_J8Omzln1w4t0f)pbWR7vkYyI4=WIHnp%}A=kMjyyjXnyAs6R%z&A6ZCGmH6DMKhvmJk?ocx`2HAyEt4~N8|ZIY zCbHj11IUH|iA;Ly55dF^f^BpUpSE7QJONc10GYBhG}JUuZAqZ0|j}xd&m>` z@$HZu1H>iN{npkU<0UQeSdpkyC>3qT#8ICUlwyVH-iXk(@se!1iaw<#0%hzdy)X|< zybU^ zOLxsACWfS9?LLFY4E++$scF+`o2;tMF@j7@Rv6!sc^tA?bS^J-8FD2HKLmoECob2 zsrk(ev)%uaB>IgVR|#cIH*Y@YU?NkBYf$VIYgF{9IS&?8?oOn{)-<_;lb2r|xd&Iw zUZu>`n)Nk04?M$=#@a$wg=^UmMg(t$hTgi7Z>q3dMK(LTvN?2)7NIiAA=mnDV=$fu zo->%bJ40HDKD|$iu&e{E#ZU9+GyM%Pq ziD2pbnFb`A$R{Jfd9tfxQ_I@?6StLvt>J^U)_wZYp`1>;Qp4&Q2C@SVcEQ!+q5jY$ z#%d!f^4DChn{?tf0=FWJMU>yM-|&H+dg>+kX2SDC%rDLhgUUcL4(w&Q$&w0;$odXu zB;x0-R~)NEYZ=W>yG^W~Q`KtgJ=&#`JEyy$EhD7>@=^q0N}sbgdYmMV7~dc`%ce#@ zhHBK6?8iYxB-cMW4)x6+q7VN1)(-mUS+`dm%BtTx)k#aFY9VNRcE4|OBA`CN+3YuG zz+>>(!u?#EUJ$lMd3NOGZ8DaDsV#^T!L}JYSLR2Ekokk%516hJ{mxw7k*+#A*mC=B zeVN-uv~Fkr=lqP_IP-W~dXnMH(g-Ek`#dZ$-*cd}9KgR5p34K&sy{Y^+l$gl!9q4$ z!?qLot*6tgzNY<=2<_+N5VZ(G>t@OF%box29`Rd!C%}f3O$N+KF61BR(@j zQQP&&`se^cqscmCvBFX<>p_zhTqo$X-kSX$zfIDy(ww|AO2a^Q2F#B>=XWEYiTS=e zpUoD6bd9D3{fBg^8(Y?NH))f%!p-_CbYRzC+`d1N3LFZ5$1?d9Nlp*y(?I;n|86P; zcIYMITE&6;pP5n6F}L4C?`cA+Dlh_v9B^&wD$0OhMhLfGmg4FiJN~w~nGNaGtY>%M zHB#6O<&fTQ*uPs2*XIuu1*hEy{&xrmW6LJGaY4)JvX)yOyh_TuAYB!iU?%pK_~pZP z0Z@l*JZ$CTqd8xvMi)Y~TdKv01Kyf!$}1!&yPB9l#7GL0(&|YAEFx^^?2~jUExPg* zFGym9$PiUgP3IJt(c~NGh_z)C5dR%dmOtzsoz&YpJWy>sM^0<27BtM21;GK#XMBdx zQ%ldRV#0Gq(Nv(}fFk1;Qj?lY$^RXqs@(ouL-uIaVRF;SZ(Wbm!;hcjeoJds@MY%P zn~Q@*=HD)r4gGH@(3vJ6*L`^ezfwCfFQJ z=3ZE*>4nfeiUI54LDCNfh)@I3~;a=bwvzKin=hAr?jKAUIb4c?9LO7jLh1d zpRjqfFsWXt`p53P$&A1m<`*$A7XfiQb@E*1P&0b3`__#PxcodMxGv{cdCo<+T%Kd0 zDx4a-`i5B6mklJ>ILx}F?E(YzlSA}(2IYLc!ADP%URuWd?}0&UzxFMg5+FaZtKhuxQPGuy!NNE`+=M2^+*OVsd3w8LQqYkxx}Q8-s_6t~?VJR| zmC9HOVq(K@;5CV!Vic?v{e^O#kk)?T;ek+|l`gamH9X@JzIp?^>UsDJl|c_u$f03sU=g5#E@(2u zm)0t?Pg@zdF!>Olv8(4u)P~jZNQe@T=5@=kg*~Ku6>BZ`e@|nPcWJgdJ*BS%7ezPb0HI%PobVMCr*-;QT(B zt({_I1eQjMAcD^-Q84X&2j4x6;=FNRxlr)8jOqY+WA*?1r=q<%mc%9qA^ZbQ2u(JE zr!0#)9oWN(mluO*JNa0L6uk#7o(NzhHfk)f(m*S^hK=LANkX)D^UqIFLeVMf-0ga* zd$Z8bZSj$KXSr^LB}T}~Iot+2$fD6~n7Q?Guq3?DfAuZUuU`|)B)}9&d*gT85v@=d zIAQ_tE+zZ6?49-_y~Jg+K|}+8Z1J$|c338Kah~zW^JntBTglqH(>}WP7r{nmdtkEW zot3kK=TA~%M;$xzqiEjxjK;w-4+$C#4fy5-7R#fWRz1Az?<7?WQtrmx-mH|5k!P8L z(y?!AtiZmL0VVgJP!289&6sOZa{-8v5v+^P3!^sRrq!MR-{BUK?NC?yA%?0EaS%^St4G z;n+RaXmuJp85K~uI2alqEq}DR=)b8)bDn$*T&Wv-Y-e5^+uMamBr4_QsWzIH9_+Q7 z_@MWG#0y<2<2bf*aRR6DVcQUA%9nq;Tt+s0r(1;%|Jmyd}soU^wbl=rR7v9!OAVO(#A#++8VH@Qnl(eCBOJUO@Z7b{#{Fp z)63tPb2Su3B-GWA-a)l-qSlj`fv0gXTk90SsbI3j4Ry=p^lG&~o0Mj3S$b(=63LDB zwyE;HWg{bZ@h4&omV|E3Qp}8{H523L+VS;JmKcXlvBKPyT!XhmiiSE2Z~|T~^w+%3 z&mS9Uz(Zy=5Zb_Vty|7lS{5H>&^j8W?-6(ws?A8+#-M_&JO12N{OQz6Nu)*zi1X>SWd3qU!u)9t`jTlFNaFeV`;8~w z3pX~H3B?Q**MP;EEL9Ch4h(K&+#p-M+%(5M-2HGJD^N-l4Ft3zD4Wgl^Z!oTyh<2q zXT39$Q$jlbI?A&zL21)jG+xY*q;u4bZ_&%GvsjP%<;4r{6B87{kX&SIIcLM+)y3N`GS z<19M@hGcjIm)6hu=t7R z*5Due^)70vT8#x`B26B*$MWmRBU@CK+WjigNZ%>r(2jO>gOl0dS;r^~Ilsi*$d+ft2;Tlk22^?YaDEX|TSkeAeMo>Azmcg7I8Aoy zkD=AjiF2_(lWC&gKL_j!?37@)hkCR#N_*&rEP`}2g@V7(-=A24`t+pit%&aWk~K2A zFE?1Kkl21k4JZiI{htWD&z}dDzH({9-hIDsfLg!kh@X2Qp7u=OhWx!eklca+$FO^m z)6FYvND;aZ6r!mR7}F%nNdk@EAu~-eOX*5=W!QPurG7~lhubmE&PBn3mggzu00F+I zB>xe-MrGdmK70SPP9iNmozLjN1vPlfszaON>N!0K8&&)Gutoqz^dOLg(w$raHo^$S zs$@Xt_P76Mxw_uVlwSW7A1Jg{7l-e;^g4~@x3r9nTy2|8QF9Xo<6WfkGu%CTXl|~k zMA`|1<7khPxNal-Epkqp;LAELZ`d<+_4&oY+ZOk2UN9p+<^@`_WdVotHUK6!5w}L-VXNN)pXc-21c{Ra z7Hmaj@6i)WR$#5(ng)-!5^K2xqJ7 zHC%L;LKAO=z3zG`kT6I`5pXxU6pCi4}FER=eB7MY%${M z(xnk0kjx`flL4cNR_=B(J0cRKKO_X=m%Oya$m#H_H5~~s#jjaGymz_5L{K$kOB;Sg z1FlIli`I?ZVzb7N|3Z_U%$pPUQg7}6;|v*xcmjXV8jSLWFofKigpOktI=ZtBv`AE> z1bN)5oFpFf#)w(2+}b{_U4=Za0;nshGgI$FBkI2;h+NMyD9?egq&8ICtM;N~!`0`` zQIb&I)6$X5&Q?CMyygFE!l%l*z`e-LH63bIm6|)ZJXGdQ%vX7r?D+V#MTCHfXHL$q z;w;3Q64=Sim20bwJkGp@Ci?E-ML2VJA!a~XaxjkJ|1v3vYRoFM;q%F7v$KFtDP)UZ z0WcoUeU6urA-A+?HI`@=BGfSI5t63tJCn$#Caxsh48iXOvV}-jv*OZ??@jwVVG3=! z7%kQG^AccMnd#*PInnm$P}7QvisDHHZ+EJ_83e!NUAP+Jz}fQzdHt}6$$5a&k?LGA zuI;N@pEfZBXQ)&DIR}GRxHMT!a)?xpj&+}QS6*`O*DENPt=;SFxC++>e8T!%;^1XS zGA}J74s$=AKAaZFKXcm2ZF6Dn^2xps8fgeN$gAh`mSQjAzTZ=bj81m^w+(GIsy+bZ zUKT^+<+wJ2Ibqsv;|mw4!t?ZrA;7|;uYJ<0VDZ#R5E?q8hf?_Hp(13Gvtpnnd%(_cO?{BC2y7h9Z}k?mFEeakDKoINA+B}`&x;fp}|9QN)V z1g}}^u4JIGu2#a>f=izLburA9AjF_}&dfs0?HcW1adce1-5AbjOX9W}qq8iN5({^V z>0q5=*sY-K;wK|z!5KO*@F?6!dt~D(igg-;ICxAA)dsQw?wqR>{%U(1v0y6U4~Y5< zF}E^Y>To;KK0L*)j>xf`d@Zv4W^qVw`o693M?ZOxEr#CVBZ(HHg;BDtu3g-1>joO@ zAE&y$7xm88F+=)PfVdmDVD3OK2#F3-gJtlRqC69%P}dNHi`Dx_hdbcD9T#_|x|)=} z)Mee+^~hsy!WXfPFrx&cA~;2-c;V=)Y8EtzGOqo8hF#A*CIb%VpQAFe7tZt3qh9DQ z34yohE+}Yb2V-#u7_yLLva^g#{;{4j59MkHUZRT}5sHhMrEKdB#R8hh7&ar8HwFpB zG8X#z?Soujo(J$;@g2fZ4@UQGJa&#xR=Nd#fiwh2#ed<Di+nx>$|Elg0H>6u!j;>u^X_d*VjK)< zgs{|q$8^;+t?B?{(HJ|V=&GwIQdb@o*$@(U8}B{% z&6m)7lvk)_Q*t71CNONz$U&6Dguq!P$9(zXS!UbLyVlJ1KAZsjZ@xS-q@m#@WMd_c-sO;D+vRr6-{PgB^i6Pe%tu2dr!3$l*`lMX&j* zn#fL(!P1ca&_)7<$m&2EY=~kUz~Uh9TbG(&IlhqZ7kyMZ)3P)!7D1{UJJ+xwipTryR5kyWyPQLMdMPH*ACSKpTtixTluz{}$4ldr}Np$)_7ntWJ z1k1IM>;Z^#Xv3G3y7=CsX10~t^jssdLJPA*Dmc#6{PL4%+Pwc)?k4#b`vn|zTdbT_ zmxu3d-L^13U)>uOme1?1S@aH(HGa3GH!O`FOW&K!(Nt6=Z?ZEjC(eQ8|vPKmZ zp8xR(#>z4;#|nlb%QSXpRx-*(;bOfxwX)i%DReQ^1uE}QX%d3&ZqkU*wg-Oiye4Yf zd3j$DZg01z_WS+^2|!8~;|KuhJTyDtlMl@fB(9vRqKh}!|5S2UWx5a3HUw|9nzp`E zj4M5OOBG#YPLrp^_C%E7#)(~g`vKz!GB={~al0_=YS;A}!5Bb4ZNZ%Gu2E-Nsp-^G zy|gdyH#4=Q88Ye;T1!lO`BLM%i^$v%whSOeh)}-$e4B-4PkLPa70$Nu@rjz%N*CNu zV;UbxRY^QJUP!*xAFI@~>Jz@2_B{~5lkcOG=$V&>ykabqxs8}t!-7d!`A?s!uJvP< z*H+@Jx<`0QTPG(vJq0e#P>o+7*Zv5zNfJgrA8dOZAB->o;OmBxe9W0x2YnG@e?t(G zlaDv^{A%A^g#1Xu_x#Y!wkXBpNZPkw#4Z=^)3u!3-0y*4TaEcW#QzT}05@EuXtWn5 zSWQ~4G6Js8GQ$kFeq&gFeyUnbpZUNKRx*hP4cPW!6Y62IZJUA#^KlzrZ_)Jd$zZX_ z5Gza&wTP9G7KReM^en6B)0BYH<=!}kb`K_((=)D3$lip+Tt0jy3_9h zn)~y-A@%*9nV$GMJ@nxJEOhoAOTb!bI=fRM$6nML{%>CpjdV$ADUrdxb1%D6*(9m( zhlrc)lX}M94AXx%2}AW2(qT{ z+!-8Kf1$r)Pj~QkKZFRi;7hVl+s#MJrblqZ*bP~vz%N(UC>^kS5PE5fX8h{74`1ih zEUjg(?kUi=+N#&DO=Eq}f~*T!Z8&zF!+W_(ptY$j1}oWHDoA~+g_EVZd3UOioa6sq zIsvT<61O^pDl=Q#qm`T5N^FS59c=NL|DXphW`PwGL}9Hh+bxrqze{?A`Rs68pS3

9D)I*1gKVRW?;`JbT*9uWH&_P|#}Sc>}|A_)hnl&EvEOm)(FL*XUHV=%pFzZc=ghj9JiVX^58PRn8zSr?9dKFE*wNSc}i`5&2WnED02 z`EY@nuYr@bJ4wr9^u45tfC_|Ia`FFDk5l~j*bV4JkL$qoYi=m1b+eqHh^8Cf;x zDI3t1k7P3o`2RW@aYn+*m8SWe8NJ$Z2Hm$7 z9~GFv?DUVj2S5L&w<@&pmv)viy189t1#hGDK(ZE~Q{UzUMPuaacwPA9$q zK21*fk7~=2%wU`=pw+N!M{KKFnhYuGr9g`eiiHZ-32@}>4YjI#9d`b2_w+-W*`Ly` zU9_)(Ww`Rk>x7P215~8Zyf#;0`;EfyY}SqM^V|4>^#bG-s(5w|W!pW?Y`AW)R-&J= zmX!tk3sw!Ssi^Zjy-j|K6|Twoc(^@7R!|@f80A_q7MeMJ2?To{%aO46II!XbC#?GU z#@U}~XZsjzN&5Ep#@gb<;({y%YSsm?lH>k8Q_ z&&7Q-H)WS0UYjHRqX04zC)1^2m$A-S>vOd9iZCj!tFL={BiP|=}|olKqH^k;02K7eCn34L}w1)XcX=}GyYA~|x2y&FBhD#kus=~XMj zLM|B+wR0c$6yn9mGG&u-GY3T|Mf&@ph3K#v2m%VOIyghz=>>pltB%eB7)3&7Oc{Dp zpGkaluFmGdz}_Y(hYnXhKiaUhBPbq7&C*u5|2~q;^TNm6%s@!W>)$4OhY$W_mB7Fy zT0(bPT4rB~1AgIH8{78Ud3e=$A*@iCPDNV;yeKetGbr9Am5o@&f{Q9yWRz`OuU_zT zvaU-`;4@if{e#d3J1jZ*B)yG#ISq-T)Vs(_-)i=@bBb653n06 z;0q?d9>Bj3cZbcO+@9M@7;HozS!AfBH~*-B%!Q~({Btq{mSz_xtsnkL{;InHWawW{ zuub!hqmOpZg?j$XfI-iV&`<>H3Te5IlQJW2+;d;^FFQilowSYn-Sw#}#lP1-^)-7& zhdbe(z<2A9pI@t?w^|&>VumQj&{V>Xr29C4pe`=tz-HA$3QD5M#yE*Y_e)TG1Z^E` zK7;B*ueJ@TJ_vj2|4e;}ed9~;yk=0U;sbu@>&jq7hvFT_!)}EMuQT|2!>~mMIWnHk zL@&W3qmd;fn&LHS@D_TCydaZ==7rKP;eYGv^XTepG6H6v#ZQJ%S2KjL<*G^Lz}995 z21c?@F{;uT@JV|y(e(;eV*SPl45J0W{}oor2d@VO`@l{c+m6??R&U58-q4F=DzV=^ z*Z27Zy=L*tvR=u<>Z{MI8f!mVj^J;l^rT4|UWJuQ{AQHLuLzVFW*h!{_pEErf+-(# zLOGSD!K>)STcv-QZQpejnqXB1ZmIKpNm-wj);y;ysF1NMlxoyjEvhHy<2=4!Lwxzx zEuPNn%xkoW-n#oCnEVKgMGqAM)r@W{?!C3~XVtOF=hMAeZ;8_tCu6``Vr=p$J0vth8!vNIZrmeHj6i@sX*vrXJmeH9np7f z#}1u6Lk0Hvl?DMCs_^XTZ@0zgvbxVWU}jxLogeg9#HnSG;%FuC8c}11xTFV{urn^} zu)luUBW@-VmQN$wrJEi>kK(r-t{1(x1ZPntqs=UUgx=J$=hCf~@`sbl#8Kv24UeUjYeV9 z@agb)H{)_EBq5Oq0RiZ}-BQ^DdkicF<598k1Z&q2ZQHXY@vhlNiN>&W$5YC!d}m9M z!|K0X)0z4D#BRG^HRP}zw{kkWN|rxKFWkEauSKJFFt6*jveB0b-XVp;B-Ytr)cW(M zIpku^9kUByfC!eIAEM%>SuWQ|bg~?eg~8kB`Ld2}(ji+?ba>JKbozJ6a4-D3nNARs zb}fe~P?uUU>eBe6Qsjx_cbpilS{CmRSrR-Fz2__hj%ns&h|mDNyFKF!@;#Wffq~lv zDxe2pTbhiLYAVrP*&|SORaK=?->Oy%pnTOb;)r9nek)7kfCuKg4M7a;cge*4Y8g}W zKjSmFoP@3R9dxi1d8_mCvGf8+qN<^^+mE z!;-PJ1U(+%>P~Hv_;I^@FvwNuNh4>Zo!?`-e*HBVX3)9upoQaIzAYz#@?QZ`9<#&5 zYIPW^Ax(_3mw@Z%VPh*=>b}d>NO5IO#s-9B7B_!6Kox3}@WhlsB1S z%bjH>liRI^IJP9tPi2ORG^!};SPCYTG;m4TxU003?&`RF)%saB?xh;2<@Sm<`dMiw z>S%kdb-2vU`LGi0O6ll;B}1ck?8C^}a7AI6^7-Ej_~?`6rny@qr#on^=(bJNDk_>` zNVr`2EL%rxO`iA9%S7sr;&}KxT6E&^<*Rc3p&Rqz2Yap9jYBidDDB(kjeECYed0z| zN&bt)LG#gKu5irvwIMkcHMTPL=3i5#7-^SqxA!jUHPO!gID5#jvwWR@Y?ApY<`hMUY) z@qBDmy7^bC$~Fh>$Qq2Nqrr$AARwiW>3X{{-l?%BPv8vxN)uK^g)4MPb z!)Ku>M~c1pCF@x@TjI532Szl%MzMK+qAH#dJjQB|!Q!loEYFHRIG)Ka&)4eJEWAb& zc*2EltPs;bxpMLx>QG|LJ+6HFg@0(DuCn{?^%$Xoi!43q zdw4rfZ(W)$)bIVqTeDEP7v{^rzC42>A%{1i=o^YF-!(1!R-`ArqvyOf^;;%O;Rem- zBwD%YXL56#RU}0S`0o!{ai=p->GUtL5l~yhpFOdilGkwRml$&u;wxal9=>lbp zKu%rLkGIXyHy7PoTw>d&0=VzTS8Qt1*t>0wG*@h0eUetVH;ej4&V>54I$)F)9=bKk z;mUcVs{GdIRyl6);0-~Jgz%_4#tq1OHitXS2U~1g!{PC^N|>Z`ABFMo@1VuR-~`YL zM7A&3Vn0yzQ*qr-Q?l5iNGw16+h2Oqc_!gJtPs7b5OuX=B$87no}?ko&XeyA3h!e@ zLnqLz%*ZF5r$B2|@jhL1g^1)Ik^Pr=taGO-~zHFP+Z$~MUKD08#)vw^k zR#Ltj5=rqE{_d`_@(!LyjTf)Ve78cYE6XjVyYAaySa}4CfDLZyKh6%|($V@nxjQdQ zTz$lJ2PJs0vBA1rrMnqu-v98bDQk1-tLb;Y7X}PC_Uil%h~Yok93FR@U-c!6dJ>eF z_;PD$tt>q~-h5$D<#4z^uX%rm)svF*T2-RptLmdNlynSyi?#w+$5SBA3g>#(GE?FD ztZM9MXdt8RixdpT++cZ*oiQQ7K)1QZ+aTH1%1UTL&>?eU3xjE;T%+N;-`|#`>!pu< zKs$=36pF$_p}wt-38GMUZs8N6P+#OcQ7BX|d|}kbOL+Jw)Kiu_D3qru;Yk$gVbJlv khTr-B|HuFDr?F2PJMyN_)w<>hJV?|%StXflspnq*9~!M#+5i9m diff --git a/tests/drawing/matplotlib/baseline_images/test_graph/graph_basic.png b/tests/drawing/matplotlib/baseline_images/test_graph/graph_basic.png index c9883a651e68b79db0fc3509035925de187dd523..259ec8d487269ad52d4479a18943b895132ddc9e 100644 GIT binary patch literal 22749 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 literal 24565 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 cJT3e4e~E)Lzopr0Io*@?*IS* literal 25533 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 cJT3e4e~E)Lzopr0Io*@?*IS* literal 25533 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 Date: Wed, 5 Apr 2023 22:10:05 +1000 Subject: [PATCH 13/26] Remove PathCollection TODOs --- src/igraph/drawing/matplotlib/edge.py | 4 +--- src/igraph/drawing/matplotlib/graph.py | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/igraph/drawing/matplotlib/edge.py b/src/igraph/drawing/matplotlib/edge.py index 04dabf22e..929555ecf 100644 --- a/src/igraph/drawing/matplotlib/edge.py +++ b/src/igraph/drawing/matplotlib/edge.py @@ -56,7 +56,7 @@ class VisualEdgeBuilder(AttributeCollectorBase): return VisualEdgeBuilder def draw_directed_edge(self, edge, src_vertex, dest_vertex): - if src_vertex == dest_vertex: # TODO + if src_vertex == dest_vertex: return self.draw_loop_edge(edge, src_vertex) ax = self.context @@ -220,7 +220,6 @@ def draw_loop_edge(self, edge, vertex): transform=ax.transData, clip_on=True, ) - # FIXME: make a PathCollection?? return [art] def draw_undirected_edge(self, edge, src_vertex, dest_vertex): @@ -268,5 +267,4 @@ def draw_undirected_edge(self, edge, src_vertex, dest_vertex): transform=ax.transData, clip_on=True, ) - # FIXME: make a PathCollection?? return [art] diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index 6bcd474ba..5ee0ebbf8 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -364,7 +364,6 @@ def _draw_groups(self): ] # Draw the hull - # FIXME: defer this to the draw operation! facecolor = (color[0], color[1], color[2], 0.25 * color[3]) drawer = MatplotlibPolygonDrawer(self.axes) art = drawer.draw( From 4c10be2063d3b5ddc8865e2c25a03a50a78e8e99 Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Wed, 5 Apr 2023 22:16:07 +1000 Subject: [PATCH 14/26] Check contains --- src/igraph/drawing/matplotlib/graph.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index 5ee0ebbf8..5bfda2636 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -509,17 +509,22 @@ def draw(self, renderer, *args, **kwds): def contains(self, mouseevent): """Track 'contains' event for mouse interactions.""" - props = {} - edge_hit, edge_props = self._edge_artist.contains(mouseevent) - vertex_hit, vertex_props = self._vertex_artist.contains(mouseevent) - props["vertices"] = [self._node_indx[j] for j in vertex_props.get("ind", [])] - props["edges"] = [self._edge_indx[j] for j in edge_props.get("ind", [])] + props = {"vertices": [], "edges": []} + hit = False + for i, art in enumerate(self._edge_artists): + edge_hit = art.contains(mouseevent)[0] + hit |= edge_hit + props["edges"].append(i) - return edge_hit | vertex_hit, props + for i, art in enumerate(self._vertex_artists): + vertex_hit = art.contains(mouseevent)[0] + hit |= vertex_hit + props["vertices"].append(i) + + return hit, props def pick(self, mouseevent): """Track 'pick' event for mouse interactions.""" - # Pick self if self.pickable(): picker = self.get_picker() if callable(picker): From 05c7437cdeb90c81f2f975588c2e47380b0df034 Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Wed, 5 Apr 2023 23:27:33 +1000 Subject: [PATCH 15/26] Revert test image --- .../test_graph/clustering_directed.png | Bin 23399 -> 36425 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/drawing/matplotlib/baseline_images/test_graph/clustering_directed.png b/tests/drawing/matplotlib/baseline_images/test_graph/clustering_directed.png index 4d3486fe3173ae2f0814632c30485c2efd94a6b2..bd2235aa56e1f2decda6b0d4907ddc8817eaed1f 100644 GIT binary patch literal 36425 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≦)ess8d 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 literal 23399 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 D<#A&W From 9f660d44392ba59478635363f1a4b9f462bbacc2 Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Thu, 6 Apr 2023 06:43:20 +1000 Subject: [PATCH 16/26] mark_groups now works, update baseline test images --- src/igraph/drawing/matplotlib/graph.py | 29 +++++++++++++----- src/igraph/drawing/matplotlib/polygon.py | 1 + .../test_graph/clustering_directed.png | Bin 36425 -> 34606 bytes .../test_graph/clustering_directed_large.png | Bin 60676 -> 60151 bytes 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index 5bfda2636..d6942d8ea 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -133,7 +133,6 @@ def get_children(self): ], [], ) - return tuple(artists) def _set_edge_curve(self, **kwds): @@ -162,21 +161,35 @@ def _set_edge_curve(self, **kwds): return None def get_vertices(self): + """Get vertex artists.""" return self._vertex_artists def get_edges(self): + """Get edge artists. + + Note that for directed edges, an edge might have more than one + artist, e.g. arrow shaft and arrowhead. + """ return self._edge_artists def get_groups(self): + """Get group/cluster/cover artists.""" return self._group_artists def get_vertex_labels(self): + """Get vertex label artists.""" return self._vertex_labels def get_edge_labels(self): + """Get edge label artists.""" return self._edge_labels def get_datalim(self): + """Get limits on x/y axes based on the graph layout data. + + There is a small padding based on the size of the vertex marker to + ensure it fits into the canvas. + """ import numpy as np vertex_builder = self.vertex_builder @@ -228,6 +241,7 @@ def _draw_vertex_labels(self): va="center", transform=self.axes.transData, clip_on=True, + zorder=3, # TODO: overlap, offset, etc. ) self._vertex_labels.append(art) @@ -286,6 +300,7 @@ def _draw_edge_labels(self): color=visual_edge.label_color, transform=self.axes.transData, clip_on=True, + zorder=3, **text_kwds, # TODO: offset, etc. ) @@ -299,14 +314,14 @@ def _draw_groups(self): kwds = self.kwds palette = self.palette layout = self.layout + mark_groups = self.mark_groups vertex_builder = self.vertex_builder - if not kwds.get("mark_groups", False): + if not mark_groups: return # Figure out what to do with mark_groups in order to be able to # iterate over it and get memberlist-color pairs - mark_groups = kwds["mark_groups"] if isinstance(mark_groups, dict): # Dictionary mapping vertex indices or tuples of vertex # indices to colors @@ -315,6 +330,10 @@ def _draw_groups(self): # Vertex clustering group_iter = ((group, color) for color, group in enumerate(mark_groups)) elif hasattr(mark_groups, "__iter__"): + # One-off generators: we need to store the actual list for future + # calls (e.g. resizing, recoloring, etc.). If we don't do this, + # the generator is exhausted: we cannot rewind it. + self.mark_groups = mark_groups = list(mark_groups) # Lists, tuples, iterators etc group_iter = iter(mark_groups) else: @@ -571,10 +590,6 @@ def __init__( self.edge_drawer_factory = edge_drawer_factory def draw(self, graph, *args, **kwds): - # Deferred import to avoid a cycle in the import graph - from igraph.clustering import VertexClustering, VertexCover - - # Positional arguments are not used if args: warn( "Positional arguments to plot functions are ignored " diff --git a/src/igraph/drawing/matplotlib/polygon.py b/src/igraph/drawing/matplotlib/polygon.py index 0e10fa4c3..8e429a9b8 100644 --- a/src/igraph/drawing/matplotlib/polygon.py +++ b/src/igraph/drawing/matplotlib/polygon.py @@ -84,6 +84,7 @@ def draw(self, points, corner_radius=0, **kwds): mpl.path.Path(path, codes=codes, closed=True), transform=ax.transData, clip_on=True, + zorder=4, **kwds, ) return art diff --git a/tests/drawing/matplotlib/baseline_images/test_graph/clustering_directed.png b/tests/drawing/matplotlib/baseline_images/test_graph/clustering_directed.png index bd2235aa56e1f2decda6b0d4907ddc8817eaed1f..8a8179e05c9997cca1a174bfa5702e803efa1167 100644 GIT binary patch literal 34606 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 literal 36425 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≦)ess8d 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 diff --git a/tests/drawing/matplotlib/baseline_images/test_graph/clustering_directed_large.png b/tests/drawing/matplotlib/baseline_images/test_graph/clustering_directed_large.png index 6d7f5f038171bf243b89e7e0d67581e0921c7df5..a6ea8972f330c3b60de970b50a37f014b747aa2f 100644 GIT binary patch literal 60151 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 literal 60676 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 Q;K8M?qODwd%Od!H02y`u>i_@% From 8a7f368db90a1b70114e9bc106913fb1d018eaee Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Thu, 6 Apr 2023 13:13:01 +1000 Subject: [PATCH 17/26] Vertex label offset --- src/igraph/drawing/matplotlib/graph.py | 32 ++++++++++++++++++++------ 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index d6942d8ea..bb7e24247 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -210,6 +210,8 @@ def get_datalim(self): return (mins, maxs) def _draw_vertex_labels(self): + import numpy as np + kwds = self.kwds layout = self.layout vertex_builder = self.vertex_builder @@ -233,16 +235,34 @@ def _draw_vertex_labels(self): vertex.label_size, ) - art = mpl.text.Text( - *coords, + # Locate text relative to vertex in data units. This is consistent + # with the vertex size being in data units, but might be not fully + # satisfactory when zooming in/out. In that case, revisit this + # section + dist = vertex.label_dist + angle = vertex.label_angle + if vertex.size is not None: + vertex_width = vertex.size + vertex_height = vertex.size + else: + vertex_width = vertex.width + vertex_height = vertex.height + xtext = coords[0] + dist * vertex_width * np.cos(angle) + ytext = coords[1] + dist * vertex_height * np.sin(angle) + xytext = (xtext, ytext) + textcoords = 'data' + + art = mpl.text.Annotation( vertex.label, + coords, + xytext=xytext, + textcoords=textcoords, fontsize=label_size, ha="center", va="center", transform=self.axes.transData, clip_on=True, zorder=3, - # TODO: overlap, offset, etc. ) self._vertex_labels.append(art) @@ -292,17 +312,15 @@ def _draw_edge_labels(self): ) text_kwds["rotation"] = rotation - art = mpl.text.Text( - x, - y, + art = mpl.text.Annotation( label, + (x, y), fontsize=visual_edge.label_size, color=visual_edge.label_color, transform=self.axes.transData, clip_on=True, zorder=3, **text_kwds, - # TODO: offset, etc. ) self._vertex_labels.append(art) From a57011db4ebe2f7b71d8c408a737e51701d573d8 Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Thu, 6 Apr 2023 14:43:27 +1000 Subject: [PATCH 18/26] Correct logic in draw --- src/igraph/drawing/matplotlib/graph.py | 2 +- .../test_graph/graph_edit_children.png | Bin 24177 -> 22431 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index bb7e24247..5b2ed04bd 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -535,7 +535,7 @@ def draw(self, renderer, *args, **kwds): if not self.get_visible(): return - if (not self.get_children()) or self.stale: + if not self.get_children(): self._reprocess() # NOTE: looks like we have to manage the zorder ourselves diff --git a/tests/drawing/matplotlib/baseline_images/test_graph/graph_edit_children.png b/tests/drawing/matplotlib/baseline_images/test_graph/graph_edit_children.png index 33fa772b2dfe4aa8da5819da407060178cb44a0f..14a9122d80c3d75900e9c77d4a09d04e540763f2 100644 GIT binary patch literal 22431 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%0AL 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 From c8ef8175a62311a255b38cba1cef40b5fdffcab7 Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Thu, 6 Apr 2023 14:48:54 +1000 Subject: [PATCH 19/26] Try new conditional import for matplotlib --- src/igraph/drawing/matplotlib/graph.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index 5b2ed04bd..0524d052b 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -28,6 +28,10 @@ __all__ = ("MatplotlibGraphDrawer",) mpl, plt = find_matplotlib() +if mpl is not None: + Artist = mpl.artist.Artist +else: + Artist = object ##################################################################### @@ -81,7 +85,7 @@ def method(self, *args, **kwargs): "set_picker", ) ) -class GraphArtist(mpl.artist.Artist, AbstractGraphDrawer): +class Graph(Artist, AbstractGraphDrawer): """Artist for an igraph.Graph object. Arguments: @@ -250,7 +254,7 @@ def _draw_vertex_labels(self): xtext = coords[0] + dist * vertex_width * np.cos(angle) ytext = coords[1] + dist * vertex_height * np.sin(angle) xytext = (xtext, ytext) - textcoords = 'data' + textcoords = "data" art = mpl.text.Annotation( vertex.label, @@ -619,7 +623,7 @@ def draw(self, graph, *args, **kwds): ax = self.ax # Create artist - art = GraphArtist( + art = Graph( graph, vertex_drawer_factory=self.vertex_drawer_factory, edge_drawer_factory=self.edge_drawer_factory, From 5659847341eede1383c27714578cae244b00858b Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Thu, 6 Apr 2023 14:55:08 +1000 Subject: [PATCH 20/26] Try again with mpl imports --- src/igraph/drawing/matplotlib/graph.py | 4 ++-- tests/drawing/matplotlib/test_graph.py | 18 +++++++++++------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index 0524d052b..1d5854f2e 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -28,9 +28,9 @@ __all__ = ("MatplotlibGraphDrawer",) mpl, plt = find_matplotlib() -if mpl is not None: +try: Artist = mpl.artist.Artist -else: +except AttributeError: Artist = object ##################################################################### diff --git a/tests/drawing/matplotlib/test_graph.py b/tests/drawing/matplotlib/test_graph.py index 594b7489e..bbc7554d2 100644 --- a/tests/drawing/matplotlib/test_graph.py +++ b/tests/drawing/matplotlib/test_graph.py @@ -15,6 +15,7 @@ try: import matplotlib as mpl + mpl.use("agg") import matplotlib.pyplot as plt except ImportError: @@ -68,16 +69,20 @@ def test_mark_groups_squares(self): plt.close("all") g = Graph.Ring(5, directed=True) fig, ax = plt.subplots() - plot(g, target=ax, mark_groups=True, vertex_shape="s", - layout=self.layout_small_ring) + plot( + g, + target=ax, + mark_groups=True, + vertex_shape="s", + layout=self.layout_small_ring, + ) @image_comparison(baseline_images=["graph_edit_children"], remove_text=True) def test_mark_groups_squares(self): plt.close("all") g = Graph.Ring(5) fig, ax = plt.subplots() - plot(g, target=ax, vertex_shape="o", - layout=self.layout_small_ring) + plot(g, target=ax, vertex_shape="o", layout=self.layout_small_ring) graph_artist = ax.get_children()[0] dot = graph_artist.get_vertices()[0] dot.set_facecolor("blue") @@ -87,7 +92,7 @@ def test_mark_groups_squares(self): def test_gh_587(self): plt.close("all") g = Graph.Ring(5) - with overridden_configuration('plotting.backend', 'matplotlib'): + with overridden_configuration("plotting.backend", "matplotlib"): plot(g, target="graph_basic.png", layout=self.layout_small_ring) @@ -169,8 +174,7 @@ def test_clustering_directed_small(self): g = Graph.Ring(5, directed=True) clu = VertexClustering(g, [0] * 5) fig, ax = plt.subplots() - plot(clu, target=ax, mark_groups=True, - layout=self.layout_small_ring) + plot(clu, target=ax, mark_groups=True, layout=self.layout_small_ring) @image_comparison(baseline_images=["clustering_directed_large"], remove_text=True) def test_clustering_directed_large(self): From 495ce27a930c7939f9c8d7afe4fd1b21f2629548 Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Thu, 6 Apr 2023 15:01:04 +1000 Subject: [PATCH 21/26] New try for import of Artist --- src/igraph/drawing/matplotlib/graph.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index 1d5854f2e..f60c354c2 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -18,7 +18,7 @@ from igraph._igraph import convex_hull, VertexSeq from igraph.drawing.baseclasses import AbstractGraphDrawer -from igraph.drawing.utils import Point +from igraph.drawing.utils import Point, FakeModule from .edge import MatplotlibEdgeDrawer from .polygon import MatplotlibPolygonDrawer @@ -31,7 +31,7 @@ try: Artist = mpl.artist.Artist except AttributeError: - Artist = object + Artist = FakeModule ##################################################################### From db979528eb1634252b1b89bdcca33907acee64fa Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Fri, 7 Apr 2023 19:26:47 +1000 Subject: [PATCH 22/26] matplotlib artist: Graph.set --- src/igraph/drawing/matplotlib/graph.py | 79 ++++++++++++++++++-------- 1 file changed, 55 insertions(+), 24 deletions(-) diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index f60c354c2..bc0607907 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -36,6 +36,14 @@ ##################################################################### +class _Unset: + def __repr__(self): + return "" + + +_UNSET = _Unset() + + # NOTE: https://github.com/networkx/grave/blob/main/grave/grave.py def _stale_wrapper(func): """Decorator to manage artist state.""" @@ -101,26 +109,31 @@ def __init__( graph, vertex_drawer_factory=MatplotlibVertexDrawer, edge_drawer_factory=MatplotlibEdgeDrawer, + mark_groups=None, layout=None, - mark_groups=False, palette=None, **kwds, ): super().__init__() self.graph = graph - self.layout = self.ensure_layout(layout, graph) self.vertex_drawer_factory = vertex_drawer_factory self.edge_drawer_factory = edge_drawer_factory - self.mark_groups = mark_groups - self.edge_curved = self._set_edge_curve(**kwds) - self.palette = palette self.kwds = kwds + self.kwds["mark_groups"] = mark_groups + self.kwds["palette"] = palette + self.kwds["layout"] = layout + self._kwds_post_update() + + def _kwds_post_update(self): + self.kwds["layout"] = self.ensure_layout(self.kwds["layout"], self.graph) + self.edge_curved = self._set_edge_curve(**self.kwds) self._clear_state() + self.stale = True def _clear_state(self): - self._vertex_artists = [] - self._edge_artists = [] + self._vertices = [] + self._edges = [] self._vertex_labels = [] self._edge_labels = [] self._group_artists = [] @@ -130,8 +143,8 @@ def get_children(self): artists = sum( [ self._group_artists, - self._edge_artists, - self._vertex_artists, + self._edges, + self._vertices, self._edge_labels, self._vertex_labels, ], @@ -166,7 +179,7 @@ def _set_edge_curve(self, **kwds): def get_vertices(self): """Get vertex artists.""" - return self._vertex_artists + return self._vertices def get_edges(self): """Get edge artists. @@ -174,7 +187,7 @@ def get_edges(self): Note that for directed edges, an edge might have more than one artist, e.g. arrow shaft and arrowhead. """ - return self._edge_artists + return self._edges def get_groups(self): """Get group/cluster/cover artists.""" @@ -197,9 +210,10 @@ def get_datalim(self): import numpy as np vertex_builder = self.vertex_builder + layout = self.kwds["layout"] - mins = np.min(self.layout, axis=0) - maxs = np.max(self.layout, axis=0) + mins = np.min(layout, axis=0) + maxs = np.max(layout, axis=0) # Pad by vertex size, to ensure they fit if vertex_builder.size is not None: @@ -217,7 +231,7 @@ def _draw_vertex_labels(self): import numpy as np kwds = self.kwds - layout = self.layout + layout = self.kwds["layout"] vertex_builder = self.vertex_builder vertex_order = self.vertex_order @@ -334,9 +348,9 @@ def _draw_groups(self): from igraph.clustering import VertexClustering, VertexCover kwds = self.kwds - palette = self.palette - layout = self.layout - mark_groups = self.mark_groups + palette = self.kwds["palette"] + layout = self.kwds["layout"] + mark_groups = self.kwds["mark_groups"] vertex_builder = self.vertex_builder if not mark_groups: @@ -433,7 +447,7 @@ def _draw_groups(self): def _draw_vertices(self): """Draw the vertices""" graph = self.graph - layout = self.layout + layout = self.kwds["layout"] vertex_drawer = self.vertex_drawer vertex_builder = self.vertex_builder vertex_order = self.vertex_order @@ -449,7 +463,7 @@ def _draw_vertices(self): ) for vertex, visual_vertex, coords in vertex_coord_iter: art = vertex_drawer.draw(visual_vertex, vertex, coords) - self._vertex_artists.append(art) + self._vertices.append(art) def _draw_edges(self): """Draw the edges""" @@ -478,7 +492,7 @@ def _draw_edges(self): src, dest = edge.tuple src_vertex, dest_vertex = vertex_builder[src], vertex_builder[dest] arts = drawer_method(visual_edge, src_vertex, dest_vertex) - self._edge_artists.extend(arts) + self._edges.extend(arts) def _reprocess(self): """Prepare artist and children for the actual drawing. @@ -487,13 +501,15 @@ def _reprocess(self): marshalled to their specific artists. """ # clear state and mark as stale + # since all children artists are part of the state, clearing it + # will trigger a deletion by the backend at the next draw cycle self._clear_state() self.stale = True # get local refs to everything (just for less typing) graph = self.graph - palette = self.palette - layout = self.layout + palette = self.kwds["palette"] + layout = self.kwds["layout"] kwds = self.kwds # Construct the vertex, edge and label drawers @@ -548,16 +564,31 @@ def draw(self, renderer, *args, **kwds): for art in children: art.draw(renderer, *args, **kwds) + def set( + self, + **kwds, + ): + """Set multiple parameters at once. + + The same options can be used as in the igraph.plot function. + """ + if len(kwds) == 0: + return + + self.kwds.update(kwds) + # NOTE: this also clears the state and sets the stale property + self._kwds_post_update() + def contains(self, mouseevent): """Track 'contains' event for mouse interactions.""" props = {"vertices": [], "edges": []} hit = False - for i, art in enumerate(self._edge_artists): + for i, art in enumerate(self._edges): edge_hit = art.contains(mouseevent)[0] hit |= edge_hit props["edges"].append(i) - for i, art in enumerate(self._vertex_artists): + for i, art in enumerate(self._vertices): vertex_hit = art.contains(mouseevent)[0] hit |= vertex_hit props["vertices"].append(i) From c261f28b0eccb93238177326f70f67dc734f877d Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Sat, 8 Apr 2023 14:06:20 +1000 Subject: [PATCH 23/26] Add specific set methods via decorator --- src/igraph/drawing/__init__.py | 5 ++- src/igraph/drawing/graph.py | 2 +- src/igraph/drawing/matplotlib/graph.py | 49 +++++++++++++++++++++++++- 3 files changed, 53 insertions(+), 3 deletions(-) diff --git a/src/igraph/drawing/__init__.py b/src/igraph/drawing/__init__.py index 5ae708ccc..06bcda90a 100644 --- a/src/igraph/drawing/__init__.py +++ b/src/igraph/drawing/__init__.py @@ -264,13 +264,16 @@ def plot(obj, target=None, bbox=(0, 0, 600, 600), *args, **kwds): warn("%s does not support plotting" % (obj,)) return else: - plotter( + result = plotter( backend, target, palette=palette, *args, **kwds, ) + # NOTE: for matplotlib, result is the container Artist. It would be + # good to return this instead of target, like we do for Cairo. + # However, that breaks API so let's wait for a major release if save_path is not None: if backend == "matplotlib": diff --git a/src/igraph/drawing/graph.py b/src/igraph/drawing/graph.py index ce56fe7ad..aa38d0571 100644 --- a/src/igraph/drawing/graph.py +++ b/src/igraph/drawing/graph.py @@ -555,4 +555,4 @@ def __plot__(self, backend, context, *args, **kwds): "drawer_factory", DrawerDirectory.resolve(self, backend)(context), ) - drawer.draw(self, *args, **kwds) + return drawer.draw(self, *args, **kwds) diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index bc0607907..ff2c06afa 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -81,6 +81,52 @@ def method(self, *args, **kwargs): return cls +def _additional_set_methods(attributes, cls=None): + """Decorator to add specific set methods for children properties.""" + if cls is None: + return partial(_additional_set_methods, attributes) + + def make_setter(name): + def method(self, value): + self.set(**{name: value}) + return method + + for attr in attributes: + desc = attr.replace('_', ' ') + method = make_setter(attr) + method.__name__ = f"set_{attr}" + method.__doc__ = f"Set {desc}." + setattr(cls, f"set_{attr}", method) + + return cls + + +@_additional_set_methods( + ( + "vertex_color", + "vertex_size", + "vertex_font", + "vertex_label", + "vertex_label_angle", + "vertex_label_color", + "vertex_label_dist", + "vertex_label_size", + "vertex_order", + "vertex_shape", + "vertex_size", + "edge_color", + "edge_curved", + "edge_font", + "edge_arrow_size", + "edge_arrow_width", + "edge_width", + "edge_label", + "edge_background", + "edge_align_label", + "autocurve", + "layout", + ) +) @_forwarder( ( "set_clip_path", @@ -576,7 +622,6 @@ def set( return self.kwds.update(kwds) - # NOTE: this also clears the state and sets the stale property self._kwds_post_update() def contains(self, mouseevent): @@ -693,3 +738,5 @@ def draw(self, graph, *args, **kwds): # Autoscale for x/y axis limits ax.autoscale_view() + + return art From cfdbe4af569c82906db06b53e791db2c96471f77 Mon Sep 17 00:00:00 2001 From: Fabio Zanini Date: Sat, 8 Apr 2023 14:25:05 +1000 Subject: [PATCH 24/26] Add docs on new feature in example from gallery --- doc/examples_sphinx-gallery/visual_style.py | 22 +++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/doc/examples_sphinx-gallery/visual_style.py b/doc/examples_sphinx-gallery/visual_style.py index 8273edfd6..9d33968a1 100644 --- a/doc/examples_sphinx-gallery/visual_style.py +++ b/doc/examples_sphinx-gallery/visual_style.py @@ -47,3 +47,25 @@ # default, you can use igraph's `configuration instance # :class:`igraph.configuration.Configuration`. A quick example on how to use # it can be found here: :ref:`tutorials-configuration`. + +# %% +# In the matplotlib backend, igraph creates a special container +# :class:`igraph.drawing.matplotlib.graph.Graph` which is a matplotlib Artist +# and the first child of the target Axes. That object can be used to customize +# the plot appearance after the initial drawing, e.g.: +g = ig.Graph.Barabasi(n=30, m=1) +fig, ax = plt.subplots() +ig.plot(g, target=ax) +artist = ax.get_children()[0] +# Option 1: +artist.set(vertex_color="blue") +# Option 2: +artist.set_vertex_color("blue") +plt.show() + +# %% +# .. note:: +# The ``artist.set`` method can be used to change multiple properties at +# once and is generally more efficient than multiple calls to specific +# ``artist.set_...` methods. + From 5972fde4fc04f3391d217fa9ce99649f0315425d Mon Sep 17 00:00:00 2001 From: Tamas Nepusz Date: Fri, 21 Apr 2023 15:11:58 +0200 Subject: [PATCH 25/26] fix: remove unused _Unset class and _UNSET instance --- src/igraph/drawing/matplotlib/graph.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index ff2c06afa..31e639104 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -36,14 +36,6 @@ ##################################################################### -class _Unset: - def __repr__(self): - return "" - - -_UNSET = _Unset() - - # NOTE: https://github.com/networkx/grave/blob/main/grave/grave.py def _stale_wrapper(func): """Decorator to manage artist state.""" From e8ab5c578d8c0ce1751426c61d98b5f08baaea42 Mon Sep 17 00:00:00 2001 From: Tamas Nepusz Date: Fri, 21 Apr 2023 17:53:26 +0200 Subject: [PATCH 26/26] refactor: renamed Matplotlib Graph artist to GraphArtist --- doc/examples_sphinx-gallery/visual_style.py | 2 +- src/igraph/drawing/matplotlib/graph.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/examples_sphinx-gallery/visual_style.py b/doc/examples_sphinx-gallery/visual_style.py index 9d33968a1..232942a11 100644 --- a/doc/examples_sphinx-gallery/visual_style.py +++ b/doc/examples_sphinx-gallery/visual_style.py @@ -50,7 +50,7 @@ # %% # In the matplotlib backend, igraph creates a special container -# :class:`igraph.drawing.matplotlib.graph.Graph` which is a matplotlib Artist +# :class:`igraph.drawing.matplotlib.graph.GraphArtist` which is a matplotlib Artist # and the first child of the target Axes. That object can be used to customize # the plot appearance after the initial drawing, e.g.: g = ig.Graph.Barabasi(n=30, m=1) diff --git a/src/igraph/drawing/matplotlib/graph.py b/src/igraph/drawing/matplotlib/graph.py index 31e639104..4269e5d5e 100644 --- a/src/igraph/drawing/matplotlib/graph.py +++ b/src/igraph/drawing/matplotlib/graph.py @@ -131,7 +131,7 @@ def method(self, value): "set_picker", ) ) -class Graph(Artist, AbstractGraphDrawer): +class GraphArtist(Artist, AbstractGraphDrawer): """Artist for an igraph.Graph object. Arguments: @@ -691,7 +691,7 @@ def draw(self, graph, *args, **kwds): ax = self.ax # Create artist - art = Graph( + art = GraphArtist( graph, vertex_drawer_factory=self.vertex_drawer_factory, edge_drawer_factory=self.edge_drawer_factory,