How to match colorbar and countourf plot manually?
Mostrar comentarios más antiguos
clear all;
close all;
x=1:10;x=double(x)
y=x';y=double(y)
z=repmat(x,10,1)
maxColorLimit=12
minColorLimit=0
l=maxColorLimit:-1:minColorLimit
npoints=floor(length(l))
levels=linspace(maxColorLimit,minColorLimit,npoints)
s1=contourf(x,y,z,levels)
c1=colorbar
colormap(c1,'Parula(11)')
c1.Ticks=flip(maxColorLimit:-1:minColorLimit);
I want color barto match exactly with the countour plot. I want colorbar and plot to look like below. In short 0 to 1, 10 to 12 colorbar colors also should be out of it. What am i doing wring here?


Respuesta aceptada
Más respuestas (1)
The contourf shows the isolevel of the height z and tries to fill the gaps between contour lines. Same color means the same height. Please take a look at the following visualization.
x=1:10;
y=x';
z=repmat(x,10,1);
ax = gca;
[M, c] = contourf(x,y,z, "ShowText", true);
c1=colorbar;
colormap(parula)
As you can see the rightmost color strip tries to fill the place where the value is assumed to be "9". In order to get what you want, I think you can use imagesc.
imagesc(x, y, z);
c1=colorbar;
colormap(parula)
Note how x and y ticks are different from each other.
2 comentarios
Ankitkumar Patel
el 6 de Jul. de 2023
Editada: Ankitkumar Patel
el 6 de Jul. de 2023
Okay. I explained why you get unexpected behavior. Then you can try this to work around your issue. But note that this is not a robut solution for your problem.
x=1:10;
y=x';
z=repmat(x,10,1);
ax = gca;
[M, c] = contourf(x,y,z);
c1=colorbar;
colormap(c1,'Parula(11)')
c1.Ticks = linspace(1, 10, 12);
c1.TickLabels = string(1:12);
Categorías
Más información sobre Color and Styling en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




