MATLAB: How to hold colorbar in contourf plot

colorbarcontourf

Hello everyone
I want to plot a contorf plot in logaritmic scale. first I want to plot in normal to provide colorbar, then hold the colorbar and scale the datas to log10 and plot again. this is the code:
contourf(a,b,c);
h = colorbar('YScale','log');
hold(h);
d = log10(c);
cla
contourf(a,b,d);
but the colorbar doesn't hold and when I re plot the the contourf, the colorbar is disappear, and if i plot the colorbar again, then it is shows the colorbar of new contourf which is wrong.
So, how can I plot the colorbar of the first contourf on the second plot of contourf? how can I hold or keep the colorbar? thanks.

Best Answer

I haven't tried this entirely, but instead of cla and replotting try
figure(1)
contourf(1,b,c)'
h = colorbar('YScale','log');
d = log10(c);
figure(2)
contourf(a,b,d)
a = get(1,'children');
copyobj(a(1),2);
This is a crude reparenting of the colorbar from the original figure to the new one.