2D Contour colormap too dark.
13 views (last 30 days)
Show older comments
Hi.
I have a problem. I made a colormap matrix "b" by picking out the rgb colour codes using Photoshop.
However, the Matlab GUI contour appears to be a lot darker than the initial excel contour it is based upon.
I have managed to change the brightness as follows (.x, .y, .z etc. being the rgb codes)
b = [.x .y .z; .w .v .u;...];
colormap(b);
brighten(0.6) %anything lower is far too dark,
%anything higher is extremely bright
The brighten function only changes the brightness of the contour, but even with the ideal brightness it has this greyed out touch to it.
Here is a comparison:
- The colours as they should be: http://i1329.photobucket.com/albums/w552/mrcjkb89/excelColours_zps71ba107b.jpg
- The Matlab colours: http://i1329.photobucket.com/albums/w552/mrcjkb89/matlabColours_zpsd1ddbf0c.jpg
Any tips would be much appreciated!
Marc
6 Comments
Rachel Baker
on 19 Aug 2016
Hi,
I had a very similar problem, and ended up solving it with one line:
caxis([MIN MAX])
You can set your colormap over a specific range so that the colors that are "too" dark are associated with values outside of the range you are plotting. Hope this helps someone else!
-Rachel
Accepted Answer
Sven
on 6 Sep 2013
Edited: Sven
on 6 Sep 2013
Hi Marc,
Got it. The RGB values you're copying in are 8-bit RGB colours of integers ranging from 0 to 255. You're right that MATLAB defines its RGB colours as double values from 0 to 1, but in order to get a true conversion you should just divide the integers by 255, rather than copy them in as 0.xxx. Using 0.xxx, the "brightest" number you'll get is 0.255, which is still about one quarter as bright as the true brightest value of 1.
Try this:
b = [.091 .153 0;...
.114 .159 0;...
.137 .166 .001;...
.160 .172 .001;...
.184 .178 .001;...
.207 .184 .001;...
.230 .191 .002;...
.253 .197 .002;...
.253 .181 .003;...
.253 .166 .005;...
.253 .150 .006;...
.254 .134 .007;...
.254 .118 .008;...
.254 .103 .010;...
.254 .087 .011];
b2 = b*1000; % Get them back to whole numbers from 0 to 255
b2 = b2/255; % Transform them from [0 255] to [0 1]
figure, peaks; colormap(b)
figure, peaks; colormap(b2)
Or, more directly you can simply copy in your values without the leading decimal point (so that they will be whole integers up to 255), then divide them by 255.
Did that sort things out for you?
More Answers (0)
See Also
Categories
Find more on Lighting, Transparency, and Shading in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!