HeatMapping the Spread of WalMart

I recently came across a post on FlowingData with a visualization showing the growth of the WalMart chain over the years.  It’s very well done, but all those icons really clutter up the map.  The fact that they’re semi-transparent makes it possible to distinguish the dense areas from the sparse ones, but it’s difficult to tell those intermediate shades of green apart from one another.  It sure would be nice if the color varied across the map instead… heat maps to the rescue!

I’ve put together my own animation of the WalMart dataset using ModestMaps and the HeatMap component.  The visualization is most impressive when you’ve zoomed in far enough to see all of the major roadways converging on the large cities.  From there you can watch as WalMart takes over the urban areas, turning them red hot while leaving the less populated areas (relatively) cold and blue.

Unfortunately my dataset is somewhat incomplete.  The version I grabbed from Thomas Holmes has addresses for each store, but the geocoding service I used failed to convert about 100 of those addresses to latitude and longitude values.  If anyone can point me towards the complete dataset, I would love to add those missing stores to the visualization.

Before I close I want to give a nod to Universal Mind.  Last week they released SpatialKey, a heavy-duty temporal-spatial visualization tool that really shows off the strengths of heat mapping.  They’ve taken a crack at the WalMart data set as well, and it’s impressive to say the least.  Congratulations on your launch, UM.

Icons by famfamfam.com

This entry was posted in Flex, Information Visualization and tagged , , . Bookmark the permalink. Both comments and trackbacks are currently closed.


  1. Posted April 28, 2009 at 10:01 pm | Permalink


    Thanks for posting the heat map classes.

    I tried to replicate your example to make some changes and experiment a little.

    However, in your code you have:

    and in the latest version I needed to use:
    <modest:MapComponent id=”map” ….

    That seems to work, but when zooming, the heat map x and y are not in synch with the map. Any ideas how to solve that?

  2. Posted April 29, 2009 at 7:15 pm | Permalink


    The Modest Maps team has put together an example of how to get a heat map up and running with the latest version of their framework.

    I haven’t compiled their example myself, but I assume zooming works as you’d expect. Here is the class: http://modestmaps.mapstraction.com/svn/branches/no-tweenlite/samples/as3/ModestMapsExamples/HelloHeatmap.as

  3. Posted April 30, 2009 at 7:24 pm | Permalink


    Thanks. I will experiment with that code.


  4. Todd
    Posted January 7, 2010 at 5:52 pm | Permalink

    Thanks for sharing this visualization. Is it possible to cut out the animation? Essentially, what I’ve tried to do is change heatMap.dataProvider = walmartsInTimeRange; to heatMap.dataProvider = walmarts; (and disabled the doAnimation timer). Yet nothing appear on the map.

    Why would I want to skip the animation (which is cool, btw)? Because my data set is very large (4k+ points) and the animation seems to bog down.

  5. Posted September 17, 2010 at 3:04 pm | Permalink


    I did not play much with the new class you posted at Modest Maps back in April last year. Now I want to try again, but the link http://modestmaps.mapstraction.com/svn/branches/no-tweenlite/samples/as3/ModestMapsExamples/HelloHeatmap.as is broken.

    Can you post the class again. Thanks.

  6. Posted September 17, 2010 at 5:51 pm | Permalink

    Hi Gilbert,

    Looks like the modestmaps team moved their repository over to google code. You can find the new class here:


    I didn’t actually write the modestmaps version. A member from their team took the key pieces for my HeatMap class and integrated it in a way that made sense for them. So aside from the basic algorithm, I don’t know much about how to use their class.

  7. Posted September 21, 2010 at 8:44 pm | Permalink


    Thanks for the quick response as always.

    Take care.

3 Trackbacks