I have a layer of 3,000 points for a state, with each indicating the age of a specific type of building. What is a recommended visual display that effectively and equally highlights the age of these structures.

I thought of using a heat map, but that could lead to some bias, as in a small vicinity you can have 3 new buildings and 1 old one or vice versa taking away from the truthfulness. However, I'd like a visual aid that when looked at briefly or a snapshot can tell a story of the age of these structures.

  • How spread out are your 3,000 points? Do they tend to cluster in certain areas or are they more neatly spaced? – Andy W Oct 14 '10 at 3:01
  • IMHO several of the suggestions made are equally good but we need to know more about the purpose of the map to decide between them; who are the users, what 'story' does the data tell and how clustered the data is in time as well (as asked by Andy W) as in space. – Trevesy Oct 19 '10 at 21:58

I like your idea of a heat map for a statewide scale. You can depict fine grained irregularities with inset maps (paper) or scale dependencies (web map).

If you really feel the need to show discreet values, you could run a script to disperse the point features such that they aren't stacked ontop of each other (built-in ArcMap tool is called "Disperse Markers") and symbolize the age of bldgs. on a color ramp.

  • FYI: There is also a "Disperse Markers" in QGIS. It's called "Point Displacement". – underdark Oct 14 '10 at 7:35

If these buildings are packed in cities, you could use pie charts to depict the ratio of old and new buildings (or as many classes as you'd like to use).

Imho, a heatmap should represent continuous phenomena. The age of a specific type of building might not be continuous at all.

  • I disagree and think a heat or raster based map can represent non-continuous phenomenon quite well, particularly in the case where the points are so many they overlap. – Andy W Oct 14 '10 at 3:01
  • @Andy W: I agree if your goal is to map point density. But in this case I think the goal is to map the attribute distribution. A heatmap will smooth out differences (e.g. really old and brand new buildings close by each other). That might not be a desired effect. – underdark Oct 14 '10 at 6:50
  • I agree with your point, but aggregating to cities has the same type of smoothing effect. A kernel density map in this context would be considered a representation of average building age in close spatial proximity to the pixel (which may or may not be useful to the original poster). Building age can be comparable to say metal concentration in soil or temperature readings at different points. Your making some type of distinction between old and new in your suggestion as if they are different dichotomous characteristics. – Andy W Oct 14 '10 at 12:43

I like Brian's answer (and I think inset maps can be really cool and informative to highlight specific portions or irregularities), but I would at first simply use a proportional symbol to represent building age (and make two maps, one with older buildings getting a bigger symbol and one with newer buildings getting a bigger symbol). The two maps are because if you have areas that are over-sampled they will likely have larger numbers of both new and old buildings.

This won't work as well if buildings are too clustered as the proportional symbols will both overlap (as you suggested in your question). Hence here is where a kernal density estimation approach (which creates a continuous heat map) could be very helpful.

I would also say summary statistics in your case can be helpful. Calculating Global measures of spatial autocorrelation (eg. Moran's I, Getis Ord, Geary's C) will be informative about the distribution. You can also map local measures of spatial association to visualize clusters of old or young buildings.


If the purpose of your visualisation is to show the spread of building ages across the State without much drilling down to sub areas then a simple solution would be to aggregate ages of buildings together (e.g. 1850 - 1900) and show separate State maps for each time period with dots. 4 maps works well as they are all adjacent and quickly scanned. This is highly usable because of its simplicity and you can use small dots for buildings which means you can show the spread of thousands of data points at a time - more complex symbols would overlap.

However, if the purpose of the map is to allow the user to drill down and see the distribution of age in a sub section of the state or if fine distinctions of age are important then this solution probably isn't the way to do it.


Similar to a heat map, you could render the age as a z-value and make a shaded relief map, which might help a little bit with the reduction of bias - the really "tall" (old) ones would still tend to stand out, but wouldn't obliterate the "shorter" (newer) buildings.

Depending on what you're trying to show (are you trying to highlight the older buildings?) you could experiment with a logarithmic or exponential scale.

Over the large area of a state, it'd be very difficult to get much detail on building ages except as a visual average. It's not until you were looking at a block level that any representation is going to be helpful.

  • I really am not trying to highlight anything, and as much as I can I want to get away from that. – dassouki Oct 13 '10 at 17:32
  • Then you don't attempt to smooth anything - like a heat map would tend to, and let the points kinda jump out at you. (I'm envisioning) that you're really talking about generating a 3D surface that looks like a bunch of stalagmites growing out of it. Maybe "bump map" would be a better description? – Herb Oct 13 '10 at 19:54
  • 1
    It could be effective but I'm wary of 3D surfaces like this. Firstly, large peaks obscure smaller peaks behind them. Secondly, reading off the absolute value in a 3D map is less precise than if you have a color ramp. – Trevesy Oct 19 '10 at 21:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.