**Keywords:** layout algorithm, circle-packing

**Background:**

The circle-pack layout represents nodes in a hierarchal model as circles and positions each child node’s circle inside its parent’s circle. It was implemented in D3.js library and the effect is shown in the following figure:

I need an improved algorithm that can stack circles at a fixed angle in my reseach project. That is, stack circles in a fan-shaped ring. Therefore I improved the stacking method based on circle-packing algorithm and implemented it using also Javascript so that it can be used in conjunction with D3. Circles in it can be filtered and selected besides two adjacent fan-shaped rings can be compared in height and density by observation.

The main idea is to set the placement order and arrangement relationship of several circles. Based on this, I started to try the following experiments:

The first experiment idea is to calculate the center points of each voronoi polygons, and get its Maximum Inscribed Circle, just like this:

then remove the voronoi border:

It is maybe an elegant layout form, but not fit my reqiurement. Therefore, at last, I rewrite the circle-packing algorithm of D3.js, and change it into a new layout library. The figure below shows an example of the application of my new circle-packing algorithm, it reflects research development of the Computer Science, each circle represents an article taken from top 5 ranking journals (ranking by impact factors). The radius of each circle represents the cited number (non-linear).

welcome to visit: http://works.fujiazhiyu.cn/csrings

to get more examples.