塗りつぶした2次元等高線図(contourf)のカラーコンター
15 views (last 30 days)
Show older comments
様々なケースで同一のカラーコンターを使うために(同一の値に対して同一の色で表示される),以下のように指定したのですが,
contourf(X,Y,Z,[0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0],'ShowText','on');
ケース毎に存在する数値の範囲が異なるため,同一の値に対して同一の色で表示されません。
存在する数値の範囲が異なった場合でも,同一の値に対して同一の色で表示させるための方法はありませんか?
4 Comments
Kenta
on 9 Dec 2019
教えていただき、誠にありがとうございます。教えていただいたコードを実行すると
以下のようになり、「白飛び」がなくなりました。axesに色をつけるとよかったのですね。
勉強になりました。ありがとうございました。
Etsuo Maeda
on 10 Dec 2019
Itakuraさん。反映ありがとうございます。少しだけ訂正です。
cmap = colormap;
ax = gca;
ax.Color = cmap(1, :);
だと、Contour最下段の色と背景色が同じになって違和感があるかもしれません。
少しだけリファインしてみました。
ついでに上限の方もcaxis関数で弄れるようにしておきました。
Katayamaさん。こういうのでどうでしょうか。
Z = peaks;
myMin = -2;
myMax = 12;
levels = myMin:myMax;
subplot(2, 1, 1)
contourf(Z, levels);
colorbar
subplot(2, 1, 2)
contourf(Z, levels);
colorbar
caxis([myMin myMax])
cmap = colormap;
colormap(cmap(2:end, :))
ax = gca;
ax.Color = cmap(1, :);
HTH
Accepted Answer
Kenta
on 23 Jan 2020
ご返信ありがとうございます。お役に立ててよかったです。コメントのほうもEtsuo Maedaさまよりアドバイスを頂き、いろいろと変更があったのでこちらに改訂版を掲載させていただきます。宜しくお願い致します。maeda様、アドバイスをくださり、ありがとうございました。
clear;clc;close all
cmap = colormap;
Z = peaks;
minimum=min(Z,[],'all');
maximum=max(Z,[],'all');
num_level=10;
interval=(maximum-minimum)/(num_level-1);
level=minimum+(0:num_level-2)*interval;
d=[-5 3 7];
for i=1:3
Z2=Z;
Z2(20:30,15:35)=Z2(20:30,15:35)-d(i);
subplot(1,3,i)
contourf(Z2,level)
colorbar
caxis([minimum maximum])
colormap(cmap(2:end, :))
ax = gca;
ax.Color = cmap(1, :);
end
0 Comments
More Answers (1)
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!