ArcGIS StoryMaps

Mapping packed circles

When visualizing data, whether on a chart or a map, we are faced with the choice to present our data individually or in aggregate. Do we show every data point and hope our reader can decipher the meaning, or do we group like values and show a summary statistic? This decision between detail and simplicity can greatly influence how the audience interprets the visualizations that appear in a story.

However, it’s not always an either/or decision. Some methods can bridge the gap in the visualization spectrum and provide benefits from both individual and aggregate techniques. One such method is packed circles.

Packed circles

Packed circles, also known as circle packing in the mathematics world, is a data visualization technique where proportional circle symbols are arranged within a larger bounding circle. The member circles represent quantitative values as parts of a whole belonging to a categorical, hierarchical, or geographic group.

The clustered arrangement of the circles within a packed circle can effectively visualize hierarchical membership and visualize the quantitative value of the aggregate while retaining each individual symbol. Since the individual circles are retained, as opposed to being aggregated into a single symbol, they offer some unique advantages when visualizing data.

Packed circle visualization of current Ontario field crop production by crop. The chart consists of a large circle labelled "grains and oilseeds" and a second smaller circle labelled "fodder crops". Each of these circles contain circles labelled with various field crops that are packed within. These inner circles are proportional to the seeded acreage of the crop type. Within the grains and oilseeds circle are, in descending order, soybeans, grain corn, winter wheat, fall rye, spring wheat, oats, barley, canola, and mixed grain. In the fodder crops circle are, in descending order, hay and fodder corn.
This packed circle visualizes the seeded acreage of grains and oilseeds in the Province of Ontario, Canada. Each crop type is visible within its respective packed circle and the relationship between crop types can be compared.

Connecting with data points

The individual proportional symbols of a packed circle reveal the data points at a more human-readable scale in that each data point equates to one human, bird, ship, event, etc. This trait is incredibly useful from a storytelling perspective. When authoring a story with a protagonist, highlighting the associated data point within a chart or map can be a powerful narrative tool.

In this story about the shipbreaking industry, a single ship from a dataset of nearly 8,000 destined for recycling is used as a narrative vessel to introduce the topic and navigate a data visualization sequence. Throughout this sequence, each individual ship is represented by a proportional symbol within a packed circle. This allows the subject ship to be highlighted through the map choreography sequence. The audience can follow this ship to its final destination, where it is revealed in the imagery.

Animated GIF of a choreographed data visualization sequence showing a packed circle of nearly 8,000 recycled ships that is then subdivided and geographically sorted to separate packed circles located atop the destination country.
Map choreography was used in the introduction of this ship breaking story to visualize a dataset of 8,000 recycled ships and were they were recycled.

In this example, packed circles allowed for a strong association between the story’s text and the data points within the visuals. This association helps the audience develop an emotional connection with the data that can result in a more impactful story.

Part of a whole

While connecting with individual data points within a data visualization can be a powerful narrative tool, it is also useful in exploratory visualizations. Packed circles preserve the ability to interrogate individual data points while viewing them within the broader context of the group or the whole. This allows for identifying outliers and anomalies within a group and for making comparisons between groups.

Preserving each cluster member also means that they can be used to encoded with additional visual variables. These additional variables can help to reveal the internal composition of each packed circle and reveal connections between many related variables.

For instance, in the shipbreaking story each proportional symbol represents the gross tonnage of a recycled ship. As the visualization sequence progresses, the color of the symbols is used to encode whether it was recycled using appropriate methods or broken down on tidal beaches.

Diagram depicting how the data visualization of the ships dataset was color coded by recycling location and then geographically sorted to the destination country.
Color was a applied to the individual packed circles to indicate the method used to recycle the ships. This slide preceded the geographic sorting of the packed circles in order to illustrate the geographic trend of ships being broken on the beaches of Southeast Asia.

In the data visualization sequence, the color coding of the ship recycling method is choreographed to preempt the geographic sorting of the packed circles. This has the effect of illustrating that the vast proportion of recycled ships was broken on beaches and that there was a strong geographic pattern of those ships being broken on beaches in South Asia, where environmental and labor regulations are skirted in the name of the bottom line.


If geographic packed circles are just the chart-on-a-map technique you were looking for, then the experimental Python toolbox we created is for you. This tool takes a point dataset and scales each point based on a numerical attribute. These bubbles are then grouped into clusters based on a categorical attribute using a Python circling packing library. The resulting packed circles are then geolocated to the centroid of the member points.

Install & use

We’ve published an ArcGIS Pro project package containing the toolbox, some sample data, and the Python environment to support the toolbox.

Map of Canada with packed circles centered on each province and territory representing the population of places located within each geography.
The sample data within the ArcGIS Pro project contains population data for populated places in Canada. Running the tool on this data will produce clustered packed circles for each province and territory. Those circles will contain proportionally scaled symbols for the population of each city.

To get started, download the ArcGIS Pro project package.

  1. Inside within the ‘commondata’ folder of the package, locate the ‘’ folder. This folder holds an ArcGIS Pro conda environment that contains libraries necessary to support the Python toolbox.
  2. Unzip this env folder to a directory for safekeeping. Ideally, this folder would be extracted to ArcGIS Pro’s env directory ‘C:\Users\[username]\AppData\Local\ESRI\conda\envs\’. If not located in the ArcGIS Pro env directory, it cannot be nested too deeply in a folder directory, or Python will complain about the length of pathnames.
  3. Open the project and Add a new environment. Navigate to the Package manager within the ArcGIS Pro settings. Select Add an existing environment and point it to the extracted ‘arcgispro-py3-MapCirclePackingTool’ folder.

Running the tool

  1. Open the tool.
  2. Select an input point feature layer.
  3. Specify an output layer name and location for the packed circle features.
  4. Select a numeric property of the layer. This will be used to scale the area of each circle feature.
  5. Select a category property of the layer. This will be used to group the features. The average coordinates of all features within a group will determine the centroid of the output packed circle.
  6. Optionally, select a field to sort how the circles are packed.
  7. Set the minimum and maximum diameters of the output circles. No individual circle feature will exceed these constraints. Note that the units of these constraints are determined by the input feature layer coordinate system and require some experimentation to achieve the desired results.
  8. Click Run to execute the tool.

If you create your own packed circles, be sure to share them with us! We love to see your stories with creative data visualizations on @ArcGISStoryMaps.

About the author

I have all sorts of fun creating engaging maps and graphics and then sharing the process. I work from Kitchener, Canada on Esri’s StoryMaps team where those visuals sometimes make their way into immersive place-based stories. When not digging into vectors and pixels, I can generally be found riding around town on two wheels with toddlers in tow.

Notify of
Inline Feedbacks
View all comments

Next Article

Bring your 3D web applications to life with mesh animations

Read this article