1- from typing import Union
1+ from typing import Union , Sequence
22import numpy as np
33import pandas as pd
44import matplotlib as mpl
@@ -55,6 +55,7 @@ def __init__(
5555 network : GraphType ,
5656 layout : LayoutType = None ,
5757 vertex_labels : Union [None , list , dict , pd .Series ] = None ,
58+ edge_labels : Union [None , Sequence ] = None ,
5859 ):
5960 """Network container artist that groups all plotting elements.
6061
@@ -66,12 +67,16 @@ def __init__(
6667 vertex_labels (list, dict, or pandas.Series): The labels for the vertices. If None, no vertex labels
6768 will be drawn. If a list, the labels are taken from the list. If a dict, the keys
6869 should be the vertex IDs and the values should be the labels.
70+ elge_labels (sequence): The labels for the edges. If None, no edge labels will be drawn.
6971 """
7072 super ().__init__ ()
7173
7274 self .network = network
7375 self ._ipx_internal_data = _create_internal_data (
74- network , layout , vertex_labels = vertex_labels
76+ network ,
77+ layout ,
78+ vertex_labels = vertex_labels ,
79+ edge_labels = edge_labels ,
7580 )
7681 self ._clear_state ()
7782
@@ -410,7 +415,12 @@ def draw(self, renderer, *args, **kwds):
410415
411416
412417# INTERNAL ROUTINES
413- def _create_internal_data (network , layout = None , vertex_labels = None ):
418+ def _create_internal_data (
419+ network ,
420+ layout = None ,
421+ vertex_labels = None ,
422+ edge_labels = None ,
423+ ):
414424 """Create internal data for the network."""
415425 nl = network_library (network )
416426 directed = detect_directedness (network )
@@ -427,6 +437,10 @@ def _create_internal_data(network, layout=None, vertex_labels=None):
427437
428438 # Vertex labels
429439 if vertex_labels is not None :
440+ if len (vertex_labels ) != len (vertex_df ):
441+ raise ValueError (
442+ "Vertex labels must be the same length as the number of vertices."
443+ )
430444 vertex_df ["label" ] = vertex_labels
431445
432446 # Edges are a list of tuples, because of multiedges
@@ -438,6 +452,14 @@ def _create_internal_data(network, layout=None, vertex_labels=None):
438452 edge_df = pd .DataFrame (tmp )
439453 del tmp
440454
455+ # Edge labels
456+ if edge_labels is not None :
457+ if len (edge_labels ) != len (edge_df ):
458+ raise ValueError (
459+ "Edge labels must be the same length as the number of edges."
460+ )
461+ edge_df ["labels" ] = edge_labels
462+
441463 else :
442464 # Vertices are ordered integers, no gaps
443465 layout = normalise_layout (layout )
@@ -450,6 +472,10 @@ def _create_internal_data(network, layout=None, vertex_labels=None):
450472
451473 # Vertex labels
452474 if vertex_labels is not None :
475+ if len (vertex_labels ) != len (vertex_df ):
476+ raise ValueError (
477+ "Vertex labels must be the same length as the number of vertices."
478+ )
453479 vertex_df ["label" ] = vertex_labels
454480
455481 # Edges are a list of tuples, because of multiedges
@@ -461,6 +487,14 @@ def _create_internal_data(network, layout=None, vertex_labels=None):
461487 edge_df = pd .DataFrame (tmp )
462488 del tmp
463489
490+ # Edge labels
491+ if edge_labels is not None :
492+ if len (edge_labels ) != len (edge_df ):
493+ raise ValueError (
494+ "Edge labels must be the same length as the number of edges."
495+ )
496+ edge_df ["labels" ] = edge_labels
497+
464498 internal_data = {
465499 "vertex_df" : vertex_df ,
466500 "edge_df" : edge_df ,
0 commit comments