How to create a custom colormap in this case?

5 visualizaciones (últimos 30 días)
BN
BN el 6 de Mayo de 2020
Comentada: BN el 6 de Mayo de 2020
I want to know how I can change the color map and corresponding color bar to showing from light blue(#add8e6) to dark blue (#00008b).
S = shaperead ('country_Boundary.shp');
lon = S.X; % for example, I want to find all points in polygon number one
lat = S.Y;
plot(lon, lat, '-k')
hold on
axis equal
ax = gca;
xL = ax.XLim;
yL = ax.YLim;
rect_x = [-0.25 -0.25 0.25 0.25];
rect_y = [0.25 -0.25 -0.25 0.25];
x = points{:,1};
y = points{:,2};
z = points{:,3};
num_colors = 100;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clrs = summer(num_colors); %<<<< here is the problem
zlim = [min(z) max(z)]+[-0.1 +0.1];
clr_val = @(z) clrs(ceil(interp1(zlim, [0 1], z)*num_colors), :);
for i=1:numel(x)
p(i) = patch(rect_x + x(i), rect_y + y(i), ...
clr_val(z(i)), ...
'EdgeColor', 'none');
end
ax.XLim = xL;
ax.YLim = yL;
colorbar
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
colormap(summer)
caxis([min(z) max(z)])
Thanks

Respuesta aceptada

Sindar
Sindar el 6 de Mayo de 2020
Editada: Sindar el 6 de Mayo de 2020
That is essentially the example here.
Using the hex -> rgb converter from this answer:
% test image
imagesc(rand(10,10))
colorbar
% define start and end colors
start_color = sscanf('add8e6','%2x%2x%2x',[1 3])/255;
end_color = sscanf('00008b','%2x%2x%2x',[1 3])/255;
N = 10;
% create a map linearly interpolating between them
% i.e. three columns interpolating from Red1 to Red2, etc.
map=[linspace(start_color(1),end_color(1),N)' linspace(start_color(2),end_color(2),N)' linspace(start_color(3),end_color(3),N)'];
colormap(map)
  6 comentarios
Sindar
Sindar el 6 de Mayo de 2020
Note: from the error, it seems like you were trying to index the custom map directly:
clrs = map(num_colors);
The built-in colormaps (like summer) have a function that returns a colormap based on the number of colors you want. It is possible to replicate this behavior (by taking my code and putting it in a function of num_colors), but if you are directly building a map, it is an Nx3 matrix so you can't (and don't need to) tell it how many elements you want.
BN
BN el 6 de Mayo de 2020
Thank you so much. I'll be grateful if you can look at another question of mine which is really similar. here is the link: https://www.mathworks.com/matlabcentral/answers/523398-is-it-possible-to-create-this-colormap-and-corresponding-colorbar-in-matlab
Thank you again

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Colormaps en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by