MATLAB Answers

Change colors of pcolor meeting spesific conditions

3 ビュー (過去 30 日間)
Hi there
I have a 810x810 elevation data matrix (le's say Z). I want to plot it using pcolor with
However, for every Z <= 0, I want to change the color into one ocean blue or just plain red. Does anyone know how to do this?

  0 件のコメント



Walter Roberson
Walter Roberson 2020 年 7 月 25 日
cmap = winter(10));
cmap(1,:) = [.7 0 0]; %plain red
Ztemp = max(0, Z);
pcolor(X, Y, Ztemp);
When you use pcolor(), the Z coordinates are all set to 0, not to the value of the data, so it does not matter that your Z is not the "correct" Z, you won't be able to tell with datatips (not unless you use a custom datatip function.)
There are alternatives to pcolor() that do not set the Z to all 0, and for those alternative functions, it can be a bit tricky to arrange that all negative values are one color without affecting the correct functioning of the Z coordinate in datatips.

  3 件のコメント

Abdul Kadir Alhamid
Abdul Kadir Alhamid 2020 年 7 月 25 日
Interesting, does this also applies if I want to set a range of negative values to winter(10) colormap and positive values to summer(10)? Or is there any solution to do this? I attempted to use
But this only gave me a middle range colorbar (from minimum value to median value for winter(10), and from median value to maximum value for summer(10)). It is my interest to know how to measure the negative value gradiently
Kindly please let me know if you have one for this
Anyway, thank you for your answer above!
Walter Roberson
Walter Roberson 2020 年 7 月 25 日
Note that for the above FEX contribution, the value parameter is relative values, 0 to 1, not absolute values. You would use
(input_actual_value - minumum_value) ./ (maximum_value - minimum_value)
to get the proportions. If you prefer, you can use function rescale() with 'InputMin' and 'InputMax' options; or use the badly-named mat2gray() function if you have an older MATLAB release.
This is only needed to get the values to create the map. When you plot the data, use caxis() to set the upper and lower bounds of the data, to get consistent mapping to the colors.
Abdul Kadir Alhamid
Abdul Kadir Alhamid 2020 年 7 月 25 日
Thank you very much!


その他の回答 (0 件)


Community Treasure Hunt

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

Start Hunting!

Translated by