I am trying to visualize social networks relevant to my PhD in a very specific way. Namely, I would like to maximize the color difference between adjacent clusters of nodes. This can be achieved by slightly modifying some open-source code.
The code that interests me was first presented in a 2010 article, "GMap: Visualizing Graphs and Clusters as Maps." The underlying algorithm is now called gvmap and is part of graphviz, which can be found here: https://gitlab.com/graphviz/graphviz/.
Gvmap embeds a given network into a 2D plane and then clusters the nodes together, followed by a final step involving a coloring algorithm. I would like to pass Gvmap my own network (either in edgelist or METIS format), and then have this algorithm color the nodes for me. Gvmap takes the layout of nodes (I assume XY coordinates/positions are temporarily stored) and then builds voronoi cells around these nodes (essentially creating spatial boundaries, like country or State maps, between adjacent clusters). Instead of coloring these spatial boundaries, I would more simply like to color the nodes themselves -- in the article above, this is the difference between Fig. 5 and Fig. 6.
If we can take any given network and then have gvmap assign node colors, I would be very happy! If interested, I would grateful for some additional help beyond this. To not overwhelm you upfront, I'll post additional objectives below.
All the best,
Objective #1: Have Gvmap output node color (see above).
Objective #2: Have Gvmap accept pre-defined node clusters (i.e., bypass its internal clustering mechanism) and output node color. More specifically, the clusters will be pre-defined by either Infomap (http://www.mapequation.org/code.html) or OSLOM2 (http://www.oslom.org/software.htm). The following forum might suggest a way to accomplish this: http://graphviz.996277.n3.nabble.com/Questions-on-gvmap-manually-specifying-clusters-and-support-for-overlap-td3705.html. However, I think the best method involves taking all the nodes belonging to a cluster and have these clusters be represented by "super nodes." If there are edges between different clusters, then this would be seen as edges between different super nodes. One simply passes this new network of super nodes through Gvmap, which assigns these super nodes colors. The super node colors are then assigned to all the nodes it represents.
Objective #3: As OSLOM2 can produce overlapping clusters, attempt to rework gvmap to accommodate this special case. This might be the trickiest part (and if this objective is too complicated, I could foresee it being dropped). One approach is to duplicate overlapping nodes (e.g., if a node belongs to three clusters, then duplicated that node two times) and then shift the coordinates of each duplicated node slightly toward the geographic center of each cluster to which it belongs. This can then be passed through gvmap. I'll have to think through this a bit more and am open to other ways to have Gvmap color overlapping clusters....
Objective #4: Integrate the coloring output into my greater project. Basically, I have code to create a movie. This movie features a set of nodes being assigned sequentially to n number of partitions. The nodes are naively colored according to their respective clusters. I would like to swap-out this naive coloring scheme with what is above created. Again, I would be happy simply getting Objective #1 working.
Less than 30 hrs/week
Less than 1 month< 1 monthProject LengthDuration
I am looking for a mix of experience and value