How to set common colorbar for multiplots?

조회 수: 809(최근 30일)
UTKARSH VERMA
UTKARSH VERMA 2021년 9월 1일
댓글: Robert U 2023년 5월 16일 11:55
Hi all,
I am using subplots to plot multiple contour plots in a single figure using for loop and using colorbar with 'Position' but it doesn't give the common values for all the plots. I have tried different solution which was given to other Matlab users but none worked.
fig=figure(1)
clf
for i=1:24
subplot(6,4,i)
contourf(x,y,z)
end
h=axes(fig,'visible','off');
h.Title.Visible='on';
h.XLabel.Visible='on';
h.YLabel.Visible='on';
ylabel(h,'yaxis','FontWeight','bold');
xlabel(h,'xaxis','FontWeight','bold');
title(h,'title');
colormap(jet)
c=colorbar;
c.Position = [0.93 0.168 0.022 0.7];
Can you help me with this problem?
Thanks in advance!

채택된 답변

Robert U
Robert U 2021년 9월 1일
Hi UTKARSH VERMA,
have a look at caxis():
[x, y] = meshgrid(0:0.1:1,0:0.1:1);
z = rand(11,11,24);
minColorLimit = min(min(min(z))); % determine colorbar limits from data
maxColorLimit = 24*max(max(max(z)));
fig=figure(1);
for i=1:24
sph{i} = subplot(6,4,i,'Parent',fig);
contourf(sph{i},x,y,i.*z(:,:,i)) % changes due to illustration purposes
caxis(sph{i},[minColorLimit,maxColorLimit]); % set colorbar limits
end
h = axes(fig,'visible','off');
h.Title.Visible = 'on';
h.XLabel.Visible = 'on';
h.YLabel.Visible = 'on';
ylabel(h,'yaxis','FontWeight','bold');
xlabel(h,'xaxis','FontWeight','bold');
title(h,'title');
c = colorbar(h,'Position',[0.93 0.168 0.022 0.7]); % attach colorbar to h
colormap(c,'jet')
caxis(h,[minColorLimit,maxColorLimit]); % set colorbar limits
Kind regards,
Robert
  댓글 수: 6
Robert U
Robert U 2023년 5월 16일 11:55
Try this:
NBayTEMPdetmnth = rand([256,256,12]);
clf;
fig=figure(1);
t = tiledlayout(4,3); t.TileSpacing = 'compact';
for i = 1:12
ah = nexttile;
[~, hContour]=contourf(ah,flip(NBayTEMPdetmnth(:,:,i)),25,'Linestyle','none','linewidth',0.5);
ah.XTick = [];
ah.YTick = [];
end
h = axes(fig,'visible','off');
h.Title.Visible = 'off';
h.XLabel.Visible = 'off';
h.YLabel.Visible = 'off';
c = colorbar(h,'Position',[0.93 0.168 0.022 0.7]); % attach colorbar to h
colormap(c,'jet')
caxis(h,[-5 20]); % set colorbar limits
Kind regards,
Robert

댓글을 달려면 로그인하십시오.

추가 답변(0개)

범주

Find more on Data Distribution Plots in Help Center and File Exchange

제품


릴리스

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by