plot heat map on map using Latitude, Longitude and my data value

Hi,
i have a number of locations across Europe (lat,lon), and for each one i have a corresponding value (in a form of a vector). I would like to create a heatmap using the mapping toolbox such that the a circle is drawn around each lat/lon, with the colour of these circles being defined based on the value my vector.
a simple example is as follows:
figure(1);
f=worldmap([33 68],[-15 37]);
geoshow('landareas.shp', 'FaceColor', [1 1 1],'DefaultEdgeColor', 'b')
PointLatLon = [51 -2.3;54 -3.2;50 3.9;51 5.5;48 1.1];
mValue = [1 4 2 7 3];
plotm(PointLatLon(:,1),PointLatLon(:,2),'r.');
There is a code by Chad Greene which i can use to generate the circles (attached), but i don't know how to specify the colour in a heatmap form. the code for the circle can be found at: http://www.mathworks.com/matlabcentral/fileexchange/48122-circlem
Any help is much appreciated.

 Réponse acceptée

Amy Haskins
Amy Haskins le 29 Déc 2015
Modifié(e) : Amy Haskins le 29 Déc 2015
I think that scatterm will work nicely. It would look something like this:
markerSize = 50;
scatterm(PointLatLon(:,1), PointLatLon(:,2), markerSize, mValue,'Filled');
colorbar
The colors will be chosen from the current colormap based on the value. You can use the colormap command or the figure's colormap editor to change the color coding scheme.

6 commentaires

Thanks Amy, Maybe i should have mentioned this in the original question, but i would like to draw a circle at each point for a specific radius. in this case, i would like each circle to be 90km in radius. Any work around for this?
Thanks
If you want to be able to specify the size of the circles in distance units, then you would need to use something more like the circlem function that Arnab suggested. The scircle1 function in the Mapping Toolbox will give you the coordinates of the circles. You can use geoshow with the desired face color to plot them.
As far as deciding on the colors, I assumed below that the values are all positive integers. I made a colormap with a number of colors equal to the maximum value. When I plot the circles I pick my color using the value as an index into my list of colors.
If the values were not all positive integers, you would have do to a little more work to map each value to an index in the color map.
colors = jet(max(mValue));
for index = 1:length(mValue)
[latc,longc] = scircle1(PointLatLon(index,1),PointLatLon(index,2),90,[],earthRadius('km'));
geoshow(latc,longc,'DisplayType','polygon','FaceColor',colors(mValue(index),:))
end
Thanks Amy! Exactly what i was looking for :)
Hello, I was following this post for a while and this is really helpful. Just a question, how to put a colorbar in this case?
Hi Poulomi, If you follow the method proposed by Amy to plot the circles, you can then get the colorbar as follows:
colormap(colors);
set(gca, 'CLim', [0, max(mValue)]);
colorbar;
yea. Thanks! I tried something like that.. now its working :).

Connectez-vous pour commenter.

Plus de réponses (2)

Arnab Sen
Arnab Sen le 29 Déc 2015
I understand that you would like to put color for the circles created on the map. You can do this by sending 'facecolor' as an argument to the 'circlem' function. For example, you may call the function with the arguments as following MATLAB code snippet:
>> h = circlem(lats(1),lons(1),500,'facecolor','red');
For complete documentation of 'circlem', refer to the following link:

1 commentaire

Thanks Arnab, sending the 'facecolor' as an argument does color each circle, but i would like to color each one using the value of 'mValue' in a heatmap form.

Connectez-vous pour commenter.

Jack
Jack le 12 Jan 2018
Hi, this looks exactly what I need. However, is it possible to plot it on top of a google map? I am looking at data at much smaller spatial scales - towns and cities, rather than the world map in the example shown here.
Thank you

1 commentaire

In that case, you have to read shapefile of your town/cities & repeat the above.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Color and Styling dans Centre d'aide et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by