This answer provides a code for scaling the sizes of communities. I like to make the presentation of the community structure given in this answer (by @kglr) a bit more informative and friendly by adding the following properties.

  1. Keep the edges within each community as they are, while redefining the thickness of between-community edges using the edge weights ew in the original question. The sum of edge weights directed from community i to community j should be used as the thickness of a single edge from community i to community j. Conversely, the edges from j to i should be reduced to a single edge by applying the same thickness rule.

  2. In the answer referred to, some edges between communities cross over other communities. This is very inconvenient as the graph becomes cluttered. There should be no edge crossing over communities.

  3. Mathematica has a Method->"Hierarchical" option to rank the communities. This option is not suitable for my purpose. I like to use LayeredGraph algorithm to create a layered community graph rather than layered graph of vertices.

  4. In top-down ranking of the communities, a community with the largest thickness of out-going between-community edges should be placed at the top of the layered graph. If two communities have an identical thickness for out-going between-community edges, then the priority (in terms of occupying higher rank) should be given to the community with the lower (including zero) thickness of in-coming between-community edges. If a community has no in-coming between-community edge, that community should occupy the top of the hierarchy (rank) as it is only influencing the rest of the communities. Likewise, if a community has only in-coming between-community edges, that community should be placed at the bottom of the hierarchy.

Thank you...



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.