Colorbar for the point shape file

2019-09-08 07:37发布

问题:

[![enter image description here][1]][1]Hi I have plotted point shape file on the US map using geoshow function. Example codes are here:

for i = 1:length(X_1991_05) if (X_1991_05(i,3) <= -0.7); h1 = geoshow(Lat,Lon,'DisplayType','point','MarkerEdgeColor','k','MarkerFaceColor',rgb('DarkRed'),'MarkerSize',9,'Marker', 'o'); hold on; %,'MarkerSize',2,

elseif(X_1991_05(i,3) > -0.7 && X_1991_05(i,3) < -0.6);
        h2 = geoshow(Lat,Lon,'DisplayType','point','MarkerEdgeColor','k','MarkerFaceColor',rgb('DarkOrange'),'MarkerSize',9,'Marker', 'o'); hold on;


elseif(X_1991_05(i,3) > -0.6 && X_1991_05(i,3) < -0.5);
        h3 = geoshow(Lat,Lon,'DisplayType','point','MarkerEdgeColor','k','MarkerFaceColor',rgb('DarkKhaki'),'MarkerSize',9,'Marker', 'o'); hold on;    


elseif(X_1991_05(i,3) > -0.5 && X_1991_05(i,3) < -0.4);
       h4 = geoshow(Lat,Lon,'DisplayType','point','MarkerEdgeColor','k','MarkerFaceColor',rgb('Gold'),'MarkerSize',9,'Marker', 'o'); hold on;    


elseif(X_1991_05(i,3) > -0.4 && X_1991_05(i,3) < -0.2);
      h5 = geoshow(Lat,Lon,'DisplayType','point','MarkerEdgeColor','k','MarkerFaceColor',rgb('Khaki'),'MarkerSize',9,'Marker', 'o'); hold on;    


elseif(X_1991_05(i,3) > -0.2 && X_1991_05(i,3) < 0.2);
       h6 = geoshow(Lat,Lon,'DisplayType','point','MarkerEdgeColor','k','MarkerFaceColor',rgb('Beige'),'MarkerSize',9,'Marker', 'o'); hold on;    


elseif(X_1991_05(i,3) > 0.2 && X_1991_05(i,3) < 0.4);
       h7 = geoshow(Lat,Lon,'DisplayType','point','MarkerEdgeColor','k','MarkerFaceColor',rgb('Aqua'),'MarkerSize',9,'Marker', 'o'); hold on;    


elseif(X_1991_05(i,3) > 0.4 && X_1991_05(i,3) < 0.5);
        h8 = geoshow(Lat,Lon,'DisplayType','point','MarkerEdgeColor','k','MarkerFaceColor',rgb('CornflowerBlue'),'MarkerSize',9,'Marker', 'o'); hold on;    

elseif(X_1991_05(i,3) >= 0.5);
       h9 = geoshow(Lat,Lon,'DisplayType','point','MarkerEdgeColor','k','MarkerFaceColor',rgb('Navy'),'MarkerSize',9,'Marker', 'o'); hold on;
 end

end

Now I want a to add a colorbar bar based on the values h1 .... h9? An example is shown here:

I don't know how to do that... Any help ?

[1]: http://i.stack.imgur.com/ZKJeK.jpg: If I use colorbar in the code I get picture like in Fig. 2 (the attached link)

回答1:

Ok. So you're using your own colormap, that's why a single colorbar command won't help you, because you haven't told MATLAB what colormap you're using.

In your case, you can setup your colormap like this:

cmap = zeros(9,3);
cmap(1,:) = (139, 0, 0);
cmap(2,:) = (255, 140, 0);      % rgb code for dark orange
cmap(3,:) = (189, 183, 107);    % dark khaki
cmap(4,:) = (255, 215, 0);      % gold
cmap(5,:) = (240, 230, 140);    % Khaki
cmap(6,:) = (245, 245, 220);    % Beige
cmap(7,:) = (127, 255, 212);    % Aquamarine
cmap(8,:) = (100, 149, 237);    % Cornflower blue
cmap(9,:) = (0, 0, 128);        % Navy
cmap = cmap/255;  % MALTAB takes rgb indexes in the range [0 1]

Then you can use the colormap like this:

if (X_1991_05(i,3) <= -0.7)
        h1 = geoshow(Lat, Lon, 'DisplayType', 'point', 'MarkerEdgeColor', 'k', 'MarkerFaceColor', cmap(1,:), 'MarkerSize',9, 'Marker', 'o'); hold on;
....

You have to tell MATLAB what colormap you're using so it can generate a proper colorbar for you:

colormap(cmap)
colorbar