diff --git a/d3graph/d3graph.py b/d3graph/d3graph.py index 8b8991e..5c26522 100644 --- a/d3graph/d3graph.py +++ b/d3graph/d3graph.py @@ -25,14 +25,13 @@ from packaging import version import datazets as dz -logger = logging.getLogger('') +logger = logging.getLogger(__name__) for handler in logger.handlers[:]: logger.removeHandler(handler) console = logging.StreamHandler() formatter = logging.Formatter('[d3graph] %(levelname)s> %(message)s') console.setFormatter(formatter) logger.addHandler(console) -logger = logging.getLogger(__name__) # %% @@ -894,6 +893,7 @@ def json_create(G: nx.Graph) -> str: links[i]['label'] = links[i]['label'] links[i]['label_color'] = links[i]['label_color'] links[i]['label_fontsize'] = links[i]['label_fontsize'] + links[i]['tooltip'] = links[i]['tooltip'] links_new.append(links[i]) # Set node properties @@ -1000,6 +1000,7 @@ def adjmat2dict(adjmat: pd.DataFrame, 'label': Text label for the edge. 'label_color': color of the label. 'label_fontsize': fontsize of the label. + 'tooltip': Text that is shown when hovering over the edge. """ # Convert adjacency matrix into vector @@ -1054,6 +1055,7 @@ def adjmat2dict(adjmat: pd.DataFrame, df['label_color']=label_color df['label_fontsize']=label_fontsize df['edge_style']=edge_style + df['tooltip'] = df['weight'].astype(str) # Creation dictionary source_target = list(zip(df['source'], df['target'])) @@ -1070,6 +1072,7 @@ def adjmat2dict(adjmat: pd.DataFrame, 'label': df['label'].iloc[i], 'label_color': df['label_color'].iloc[i], 'label_fontsize': df['label_fontsize'].iloc[i], + 'tooltip': df['tooltip'].iloc[i] } for i, edge in enumerate(source_target)} @@ -1145,6 +1148,7 @@ def edges2G(edge_properties: dict, G: nx.Graph = None) -> nx.Graph: label=edge_properties[edge]['label'], label_color=edge_properties[edge]['label_color'], label_fontsize=edge_properties[edge]['label_fontsize'], + tooltip=edge_properties[edge]['tooltip'] ) return G diff --git a/d3graph/d3js/d3graphscript.js b/d3graph/d3js/d3graphscript.js index 22df1bc..2e45fd4 100644 --- a/d3graph/d3js/d3graphscript.js +++ b/d3graph/d3js/d3graphscript.js @@ -75,6 +75,8 @@ function d3graphscript(config = { // .style("stroke-width", 1); // WIDTH OF THE LINKS ; + link.append("title").text(function(d) { return d.tooltip; }); + // ADD TEXT ON THE EDGES (PART 1/2) var linkText = svg.selectAll(".link-text") .data(graph.links) diff --git a/requirements.txt b/requirements.txt index f8da85f..9dab12d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,6 @@ colourmap ismember jinja2 -markupsafe==2.0.1 networkx>2 numpy packaging diff --git a/setup.py b/setup.py index 76ffeec..b298611 100644 --- a/setup.py +++ b/setup.py @@ -19,7 +19,6 @@ 'ismember', 'jinja2', 'packaging', - 'markupsafe==2.0.1', 'python-louvain', 'datazets'], python_requires='>=3',