I have house price data for the UK plotted by postcode, rendered as a heatmap.

I have styled the heatmap to weight points by transfer price and not concentration of points, however I'm running into issues. (See below)

Highlighted point contains 12 houses (with same postcode) at average house sale of £196,721

Highlighted point contains 8 houses (with same postcode) at average house sale of £192,375

Highlighted point contains 3 houses (with same postcode) at average house sale of £194,666

So with all three areas containing the same average house price, the clusters are still weighted by concentration of points.

However, there are times when the heatmap seems to work:

The settings:enter image description hereenter image description here

What the heck is going on?


By definition, a heat map represent at first a density of point. You can further refine this density by assigning weights, but it is only a refinement. So, if with your current settings, a single point with no other points within 10 millimeters (on the screen) valued at 100,000 will be displayed with the same color as two houses within 10 mm of each others valued at 50,000 each.

You can't just filter by postal code or address either, as the heatmap uses a radius. So, if you have 2 adjacent house valued at 50,000 (different postal code/street corner etc), the heatmap will still use the color coded for 100,000. This is what we see on the screenshot showing a larger region. (note: since the maximum value is set to automatic, it becomes very hard to know the meaning of each color, which may be very different than anticipated ... maybe white = 1,000,000,000)

As the heatmap is behaving as it should, taking point density into account, you may want to consider other venues that would be directed by how you want nearby transaction to be represented. The closest looking output would be an Inverse Distance Weighting (IDW) interpolation. You would first filter you dataset to keep the highest (or lowest? or average?) transaction per postal code (or whatever spatial unit your are using). See the doc or a tutorial on IDW.

  • Thanks for explaining this very clearly JGH. I went into my raw data and generated averages for each postcode and deleted duplicates. I've now got exactly what I'm after. – James B May 2 '17 at 10:48
  • My pleasure, glad to hear it worked out! – JGH May 2 '17 at 13:30

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.