How to define color axis in a for loop?

4 ビュー (過去 30 日間)
Ashfaq Ahmed
Ashfaq Ahmed 2023 年 4 月 26 日
コメント済み: Ashfaq Ahmed 2023 年 4 月 26 日
Hi all, I wanted to define the color axis range based on the number of the ii in this for loop, but I don't know what is wrong, can someone please explain?
for ii = 1:16
ax(ii) = subplot(4,4,ii);
h{ii} = pcolor(LON,LAT,Temp,3,'omitnan')));
set(h{ii}, 'EdgeColor', 'none');
shading interp;
colorbar;
if ii == 1 && 5 && 9 && 13
caxis([0 8]);
elseif ii == 2 && 6 && 10 && 14
caxis([6 12]);
elseif ii == 3 && 7 && 11 && 15
caxis([6 12]);
elseif ii == 4 && 8 && 12 && 16
caxis([12 18]);
end
setup_plots(ax(ii))
end

採用された回答

chicken vector
chicken vector 2023 年 4 月 26 日
By axis color, do you mean something like this?
nPoints = 10;
[X,Y] = meshgrid(-3:6/nPoints:3,-3:6/nPoints:3);
Z = peaks(X,Y);
cmap = jet;
figure;
tiledlayout(4,4)
for j = 1 : 16
nexttile;
pcolor(Z)
idx = (1:16) + (j-1)*16;
colormap(gca,cmap(idx,:));
end
Result:
  4 件のコメント
chicken vector
chicken vector 2023 年 4 月 26 日
編集済み: chicken vector 2023 年 4 月 26 日
The are two errors in your conditions:
1)The && operator means ‘and’ but here you need ‘or’
2) You also need to repeat the portion ‘ii ==‘
So, for example, first condition should be:
if ii == 1 || ii == 5 || ii == 9 || ii == 13
Or, alternatively, you can use:
if rem(ii,4) == 1
elseif rem(ii,4) == 2
elseif rem(ii,4) == 3
else
end
Sorry for bad formatting, but I’m typing from my phone.
Ashfaq Ahmed
Ashfaq Ahmed 2023 年 4 月 26 日
Perfect! Thank you so much!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangePurple についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by