Mapshow : attribute colors to polygons according to ID

17 views (last 30 days)
Hi everyone,
I have the map layer of climate zones downloaded from there : https://datacatalog.worldbank.org/search/dataset/0042325
I would like to display the different climate zones of Ethiopia, and represent each climate zone according to the climate type (GRIDCODE field in my shapefile's structure). I have this so far :
addpath('...')
climate = shaperead('c1976_2000.shp');
figure();
set(groot,'defaultLineMarkerSize',6);
mapshow(climate, "DefaultEdgeColor",[0.9 0.9 0.9])
xlim([32 49]);
ylim([2 16]);
The map displays fine and for my region of interest. However all the climate zones just appear in yellow. Obviously I would like to have them appear each in a different color according to their GRIDCODE ID but I can't do that and couldn't find anything on MathWorks either.
Thanks!

Accepted Answer

Chad Greene
Chad Greene on 25 Aug 2022
Try this. Define a list of colors, and plot each gridcode region seperately.
climate = shaperead('c1976_2000.shp');
% List of grid codes:
gc = [climate.GRIDCODE];
% What are the unique values of grid codes?
ugc = unique(gc);
% A color for each unique grid code:
col = parula(length(ugc));
figure()
hold on
% Loop through each unique gridcode:
for k = 1:length(ugc)
% Plot only the shapes that whose grid code is ugc(k)
mapshow(climate(gc==ugc(k)), "DefaultEdgeColor",[0.9 0.9 0.9],'facecolor',col(k,:))
end

More Answers (0)

Community Treasure Hunt

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

Start Hunting!