Force-based algorithms are pretty useful in drawing networks. But the shortage is, it does not show the hierarchies within a networks. Recently I created a new algorithm using force-based algorithms for twice: the first time for the layout of community-level network and the second time for showing the individuals within communities.

In the following graph, small white circles represent websites, big gray circles correspond to language communities, and edges show the clickstreams. Websites of the same language are placed together within a big gray circle and are assigned the same color of edges, with their traffic being reflected by the size of small circles. In calculating the coordinates of the websites, I designed a new algorithm called “two-level spring embedding algorithm”, which used spring embedder for two times. Firstly I aggregated the network into a community-level network, in which nodes were communities and edges were the clickstreams transported between them. I visualized this network using the fruchterman.reingold algorithm but only plotted the nodes, which are exactly the gray circles in the figure, whose size is proportional to the total amount of clickstream within a community. Secondly I applied the said spring embedding algorithm algorithm on each of the communities and rescaled the coordinates of websites in order to place them in the gray circles. I found that with the help of the “two-level spring embedding algorithm” I could show the communities particularly clear while remaining the topological structure of the entire network.