Making two different color maps in 2014b

7 visualizaciones (últimos 30 días)
John
John el 18 de Nov. de 2014
Comentada: Steven Lord el 23 de Sept. de 2016
I'm trying to figure out how to use two different color maps in 2014b and use multiple color bars. Specifically I want to plot some image data and on top of that plot a set of contours.
Basically in the past I used freezecolors and cbfreeze. The same method behind freezecolors still works, changing the CData of your image to RGB values, but the colorbar is still a problem. CBfreeze doesn't seem to work any more because the colorbar objects are no long structs and now are specific objects.
I want to have separate colorbars for both the image data and contours but I can't seem to figure out the issue with the colorbars.
Thanks,
John
  3 comentarios
Jorge Ramirez
Jorge Ramirez el 18 de Nov. de 2014
I have the same question/problem. I am attaching a figure of what I could do before 2014b using freezeColors and cbfreeze. However, cbfreeze does not seem to work in 2014b. Thank you.
Adam
Adam el 19 de Nov. de 2014
Wow, I'd never noticed R2014b snuck in that change. It's something I've wanted for quite a while, but must have missed in the changes listings!

Iniciar sesión para comentar.

Respuesta aceptada

Sean de Wolski
Sean de Wolski el 18 de Nov. de 2014
Editada: Sean de Wolski el 18 de Nov. de 2014
You can still use the freezecolors approach or one like I use in my meshCanopy function (same idea). You'll need to set the 'Limits' property of the colorbar to the range you want (and perhaps the tick/ticklabel etc.). For example:
I = imread('cameraman.tif');
n = 64;
meshCanopy(I,stdfilt(I),parula(n),80);
h = colorbar;
%%Now compare
h.Limits = [256 256+n];

Más respuestas (4)

Nash Chu
Nash Chu el 23 de Sept. de 2016
Editada: Nash Chu el 23 de Sept. de 2016
Actually you just need to add 'gca' when you define your colormap. like this:
figure
subplot(2,1,1)
pcolor(x,y,pxy);shading interp;
colormap(gca,jet);
colorbar;
subplot(2,1,2)
pcolor(x,y,pxy);shading interp;
colormap(gca,autumn);
colorbar;
  1 comentario
Steven Lord
Steven Lord el 23 de Sept. de 2016
I recommend avoiding using gca in your program files. When experimenting in the Command Window it's okay, but inside a function (and especially inside a GUI) it's too easy for the current axes to change without you realizing it. [As one example you create an axes intending to manipulate it using gca but before you can your user gets a little bored and clicks on a different axes.]
Instead, call subplot with an output argument (which will be the handle of the subplot axes) and pass that handle into colormap.
h = subplot(2, 1, 1);
% stuff
colormap(h, jet);

Iniciar sesión para comentar.


Jorge Ramirez
Jorge Ramirez el 19 de Nov. de 2014
Thank you, Sean. However, the problem is how to add two different colorbars corresponding to the two different colormaps. Your example shows only one colorbar. I am attaching an example graph of what I mean. I produced the attached graph with Matlab 2013b using freezecolors and cbfreeze. However, as I said, cbfreeze does not work anylonger on Matlab 2014b.
Thank you.
Jorge
  2 comentarios
Sean de Wolski
Sean de Wolski el 19 de Nov. de 2014
Editada: Sean de Wolski el 19 de Nov. de 2014
In that case just call colorbar twice and change the position as necessary:
I = imread('cameraman.tif');
meshCanopy(I,stdfilt(I),parula(64),80);
ax = gca;
h = colorbar('peer',ax);
h.Limits = [1 256];
h.Ticks = [];
h.Position(1) = h.Position(1)-0.1;
h = colorbar('peer',ax);
h.Limits = [256 256+64];
h.Ticks = [];
John
John el 19 de Nov. de 2014
Editada: John el 19 de Nov. de 2014
Hi Sean,
I think you got it, thanks for the help! The only thing I'm going to have to watch out for is if the two data sources here are in the same range. It looks like you get around that by adding an offset to the data in the manifold right? I believe you can work around this by changing the labeling on the colorbar. I'll post a piece of example code if I get it working to show what I'm talking about.

Iniciar sesión para comentar.


Raul
Raul el 17 de Feb. de 2015
Still isn't clear how to use two different colormaps. How do you change the colormap?

Chad Greene
Chad Greene el 16 de Ag. de 2015
I made a solution to this for a problem I was working on. It's called newcolorbar.

Categorías

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

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by