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

heat mapmappingMapping Toolboxworld map

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

#### Best Answer

This can be quite easily done with the Mapping toolbox. Here's an example:
% read a shapefile with some regions in itS = shaperead('usastatelo.shp');numRegions = length(S);% show the mapmapshow(S)% get the current colormapcmap = colormap;numColors = size(cmap,1);% create some random data [1 numRegions], each data point is associated with a regiondata = randi(numColors,1,numRegions);% set the colors of the regions using the 'FaceColor' -propertyfor 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.