How to fill polygons based on attribute values?

16 vues (au cours des 30 derniers jours)
Keegan Carvalho
Keegan Carvalho le 23 Juin 2022
I have used the following code to load and plot the shapefile "Expot.shp" (attaced zip file). I wanted to plot the "Corr" attribute, but for some reason the colour does not match the values. (Also, the "Corr" values with zeros are basically not calculated - can treat them as NaNs)
landAreas = readgeotable("landareas.shp"); %from "geoshow" matlab documentation
row = landAreas.Name == "North and South America";
landAreasSubset = landAreas(row,:);
corr = shaperead("Expot.shp")
cmap = jet(256);
colorRange = makesymbolspec("Polygon", ...
{'Corr',[-0.02 0.05],'FaceColor',cmap}); %Use makesymbolspec to specify polygon colors
mapshow(corr,"SymbolSpec",colorRange)
colormap(cmap)
caxis([-0.02 0.05])
colorbar
hold on
geoshow(landAreasSubset)
The result map is attached below
The legend shows the "Corr" values but the map does not. I'd like to know where I seem to be going wrong; I think there's a line of code missing or needs to be changed.
I'd be grateful for assistance on this. Thank You

Réponse acceptée

KSSV
KSSV le 23 Juin 2022
Modifié(e) : KSSV le 23 Juin 2022
How about this?
shpFile = 'Expot.shp' ;
S = shaperead(shpFile) ;
N = length(S) ;
cmap = jet(N) ;
figure
hold on
for i = 1:N
x = S(i).X ; y = S(i).Y ;
x(isnan(x))=[] ;
y(isnan(y))=[] ;
patch(x,y,cmap(i,:)) ;
end
colorbar
colormap(cmap)
  11 commentaires
KSSV
KSSV le 23 Juin 2022
This is the correct mapping of corr right?
Keegan Carvalho
Keegan Carvalho le 24 Juin 2022
Modifié(e) : Keegan Carvalho le 24 Juin 2022
Not quite. The regions with values "0", I prefer not having a colour for them, becasue they are essentially "NaN" values. Is there a way to code to show no colour for the polygons with "0" values?
If the regions with "0" show no color, then I can determine if it is correct. Because most of the polygons with "0" show different colours in the above map

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by