cdlib icon indicating copy to clipboard operation
cdlib copied to clipboard

Visualizing the output of a hierarchical clustering

Open dror-kris opened this issue 2 years ago • 2 comments

I'm trying to utilize the Paris algorithm for hierarchical community detection.

When I attempt to visualize the network and communities, I encounter the following error:

KeyError                                  Traceback (most recent call last)
~\anaconda3\envs\cdlib\lib\site-packages\networkx\drawing\nx_pylab.py in draw_networkx_nodes(G, pos, nodelist, node_size, node_color, node_shape, alpha, cmap, vmin, vmax, ax, linewidths, edgecolors, label, margins)
    455     try:
--> 456         xy = np.asarray([pos[v] for v in nodelist])
    457     except KeyError as err:

~\anaconda3\envs\cdlib\lib\site-packages\networkx\drawing\nx_pylab.py in <listcomp>(.0)
    455     try:
--> 456         xy = np.asarray([pos[v] for v in nodelist])
    457     except KeyError as err:

KeyError: 656

The above exception was the direct cause of the following exception:

NetworkXError                             Traceback (most recent call last)
<ipython-input-62-3db2159df5b2> in <module>
----> 1 viz.plot_network_clusters(G, coms)

c:\users\work\src\cdlib\cdlib\viz\networks.py in plot_network_clusters(graph, partition, position, figsize, node_size, plot_overlaps, plot_labels, cmap, top_k, min_size)
    113         )
    114     )
--> 115     fig = nx.draw_networkx_nodes(
    116         graph, position, node_size=node_size, node_color="w", nodelist=filtered_nodelist
    117     )

~\anaconda3\envs\cdlib\lib\site-packages\networkx\drawing\nx_pylab.py in draw_networkx_nodes(G, pos, nodelist, node_size, node_color, node_shape, alpha, cmap, vmin, vmax, ax, linewidths, edgecolors, label, margins)
    456         xy = np.asarray([pos[v] for v in nodelist])
    457     except KeyError as err:
--> 458         raise nx.NetworkXError(f"Node {err} has no position.") from err
    459 
    460     if isinstance(alpha, Iterable):

NetworkXError: Node 656 has no position.

Should I be using an alternative visualization method? On the github page for the Paris package (https://github.com/tbonald/paris), I see the following visualization:

from utils import plot_dendrogram

plot_dendrogram(D)

Additionally, when attempting to map the partition using coms.to_node_community_map() I lose the hierarchies between communities - is there a better way to work with the partition output?

Thanks!

dror-kris avatar May 31 '22 07:05 dror-kris

Thanks for submitting your first issue!

github-actions[bot] avatar May 31 '22 07:05 github-actions[bot]

Hi, same issue here, did you find any solution ? I notice that networkx enable access to the hierarchy with the louvain algorithm

dendogram =  nx.algorithms.community.louvain.louvain_partitions(G, resolution=resolution)
coms = {}
for level, p in enumerate(dendogram):
    print(level, len(p))
    coms[level] = p

From what I see the paris function of cdlib returns only a flat list in the NodeClustering. Am i missing something here ? Thanks for your answer

paulgay avatar Feb 08 '24 14:02 paulgay