# How to generate a geographical heat map? (worldwide, country-level granularity)

42 views (last 30 days)
Franck Dernoncourt on 14 Jun 2013
Commented: MikCh on 23 Apr 2022
I want to create a geographical heat map like the following in MATLAB:
Each color is based on a list of country with a percentage associated to each of them:
Country with Codes: % of Hits
- United States (US): 36.29%
- India (IN): 18.24%
- United Kingdom (GB): 12.93%
- Spain(ES): 8.22%
- Australia (AU): 3.32%
- Canada (CA): 3.05%
- Germany (DE): 2.49%
- Netherlands (NL): 1.66%
- Israel (IL): 1.39%
- China (CN): 0.83%
How can I do it in MATLAB?
I looked at http://mathworks.com/products/mapping and Googled around but I didn't find any easy way to do it. Such kind of maps are commonly used (e.g. straightforward to do with the Google Chart API) so I'm hoping someone here shares his/her experience.
Thanks,
Franck
[1]: http://i.stack.imgur.com/64DJY.png
##### 2 CommentsShowHide 1 older comment
Franck Dernoncourt on 5 Jan 2014
Never :/ I also posted the question on Stack Exchange

Sign in to comment.

### Accepted Answer

Antti on 30 Jun 2016
This can be quite easily done with the Mapping toolbox. Here's an example:
% read a shapefile with some regions in it
S = shaperead('usastatelo.shp');
numRegions = length(S);
% show the map
mapshow(S)
% get the current colormap
cmap = colormap;
numColors = size(cmap,1);
% create some random data [1 numRegions], each data point is associated with a region
data = randi(numColors,1,numRegions);
% set the colors of the regions using the 'FaceColor' -property
for i = 1:length(S)
% FaceColor is now a color from the current colormap, determined by
% it's data value
mapshow(S(i),'FaceColor',cmap(data(i),:))
end
This gives me the map figure in the attachment.
##### 2 CommentsShowHide 1 older comment
MikCh on 23 Apr 2022
Nice approach!
What if the data variable include both positive and negative values?
How do we need to modify mapshow(S(i),'FaceColor',cmap(data(i),:)) in the loop so as to accept negative values?

Sign in to comment.

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!