MATLAB Answers

塗りつぶした2次元等​高線図(contou​rf)のカラーコンタ​ー

12 views (last 30 days)
Yoshifumi Katayama
Yoshifumi Katayama on 5 Dec 2019
Answered: Kenta on 23 Jan 2020 at 9:36
様々なケースで同一のカラーコンターを使うために(同一の値に対して同一の色で表示される),以下のように指定したのですが,
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

Show 1 older comment
Etsuo Maeda
Etsuo Maeda on 9 Dec 2019
下限の"白飛び"は実は色抜けなので
cmap = colormap;
ax = gca;
ax.Color = cmap(1, :);
のようにAxesに色を付けるとそれっぽくなります
HTH
Kenta
Kenta on 9 Dec 2019
教えていただき、誠にありがとうございます。教えていただいたコードを実行すると
以下のようになり、「白飛び」がなくなりました。axesに色をつけるとよかったのですね。
勉強になりました。ありがとうございました。
example2.PNG
Etsuo Maeda
Etsuo Maeda on 10 Dec 2019
Itakuraさん。反映ありがとうございます。少しだけ訂正です。
cmap = colormap;
ax = gca;
ax.Color = cmap(1, :);
だと、Contour最下段の色と背景色が同じになって違和感があるかもしれません。
少しだけリファインしてみました。
ついでに上限の方もcaxis関数で弄れるようにしておきました。
Katayamaさん。こういうのでどうでしょうか。
untitled.png
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

Sign in to comment.

Accepted Answer

Kenta
Kenta on 23 Jan 2020 at 9:36
ご返信ありがとうございます。お役に立ててよかったです。コメントのほうもEtsuo Maedaさまよりアドバイスを頂き、いろいろと変更があったのでこちらに改訂版を掲載させていただきます。宜しくお願い致します。maeda様、アドバイスをくださり、ありがとうございました。
result.PNG
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

Sign in to comment.

More Answers (1)

Yoshifumi Katayama
Yoshifumi Katayama on 23 Jan 2020 at 9:05
皆様
ありがとうございました。
お陰様で,希望通りの図を作成することができました。
お礼が遅くなり申し訳ございませんでした。

  0 Comments

Sign in to comment.

Sign in to answer this question.

Products