How to create personalized colormap that starts from a specified value
3 次查看(过去 30 天)
显示 更早的评论
Hello everyone
I've plotted a surface which it's value when z>=0 is what I want to report. When I use zlim([0 n]) command, the colormap won't update and the peaks are not distinguishable as you see in pictures attached. Is there a way that I could create a personalized colormap which it starts from z=0 and vary with z value? (For example in the grey gradient in pictures attached, the color of z=0 becomes black and the color of highest value of z becomes grey)
Thanks and regards
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1202843/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1202848/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1202853/image.png)
0 个评论
采纳的回答
Florian Bidaud
2022-11-22
Hi
If Z is the map you plot, you can replace all the negative values by 0 like that :
Z = [0 1 8; -1 5 10;-6 -3 14]
Z_negative = Z;
Z_negative(Z<0) = 0
And then plot this new map
If you don't want these values at all, you can replace them by NaN :
Z = [0 1 8; -1 5 10;-6 -3 14];
Z_negative = Z;
Z_negative(Z<0) = NaN
3 个评论
Florian Bidaud
2022-11-22
编辑:Florian Bidaud
2022-11-22
I'm not sure what you really want. zlim removes the values from the plot as follows:
Maybe what you want is changing the color scale ? In this case, you need to use caxis([0 n]).
x = [0 1 2 3 4];
y = [0 1 2 3 4];
z = [1 5 -2 4 6;-1 5 -6 7 8; 1 2 5 9 10; -2 -3 -4 -5 -7;5 -1 6 -2 3];
surf(x,y,z)
zlim([0 max(max(z))])
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1202883/image.png)
caxis([0 max(max(z))])
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1202888/image.png)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Colormaps 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!