塗りつぶした2次元等高線図(contourf)のカラーコンター
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 5 Dec 2019
こんにちは、コード例でlevelと示しているところに、等高線の値を指定すれば、
等高線の高さが固定されます。下の例だと、中央部のある四角形の領域の値を変化させ、
それぞれで等高線画像を示しています。
値の範囲は変わっているものの、他の場所は同じ色で示されていて、変化した部分を見て取ることができます。
しかし、これでは問題があるようで、カラーバーのもっとも下の値(ここでは-6.5)よりも低い値があるときは白飛びしますが、逆に
カラーバーの上限値(ここでは6.5)に相当する値がなければ、等高線のレベルが自動的に補正されてしまいます。例えば下のように打つと、下限の値は白飛びしていますが、上限の値がlevelどおりに表現されません。
添付いただいたファイルを拝見する限り、上限はいつも1なので、そちらの例では大丈夫ですが、case2, case3の上限(最大値)がcase1のものよりも下がった場合、うまくいきません。
少し懸念点のある方法ですが、参考になれば幸いです。
Z2=peaks-5;
contourf(Z2,level)
colorbar

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;
subplot(1,3,1)
contourf(Z,level)
colorbar
Z2 = Z;
Z2(20:30,15:35)=Z2(20:30,15:35)-3;
subplot(1,3,2)
contourf(Z2,level)
colorbar
Z3 = Z;
Z3(20:30,15:35)=Z3(20:30,15:35)-7;
subplot(1,3,3)
contourf(Z3,level)
colorbar
Etsuo Maeda
on 9 Dec 2019
下限の"白飛び"は実は色抜けなので
cmap = colormap;
ax = gca;
ax.Color = cmap(1, :);
のようにAxesに色を付けるとそれっぽくなります
HTH
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
More Answers (1)
Yoshifumi Katayama
on 23 Jan 2020
1 vote
Categories
Find more on 等高線図 in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!