Archive for the ‘Data visualization’ Category

Multi-level force-based algorithms for clickstream network visualization

Thursday, December 27th, 2012


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.


Visualizing clickstream networks using the approach of hierarchical edge bundling

Thursday, December 27th, 2012


Recently, one of my friends sent me a paper discussing about a network visualization technology called “hierarchical edge bundling”. This approach used the position and shape of links rather than nodes to demonstrate the structure of networks. I spent a few days to wrote R+Processing scripts to provide a similar solution.

In particular, I drew the attached figure as follows:
1. Using Python scripts to collect the clickstreams between the top 1,000 sites. And used Python scripts to connect to AlchemyAPI in order to detect the language of websites.
2. Constructed and analyzed the clickstream network using R. I used the library of igraph to detect the walktrap communities at first, then used the library of adephylo to convert the result of community detection into a “tree”. After that, I plot the phylogenetic tree and retrieved the position of nodes.
3. These nodes were used as control nodes in drawing Bezier curve using Processing.

Dynamic circles

Sunday, March 11th, 2012