contourf関数​を用いた特定の値を特​定の色で塗りつぶす方​法について

ある特定のZdataの時,指定した色で塗りつぶすことはできますでしょうか。
等高線のレベルは400程度で検討しています。
具体的には下記の図においてZdata=0の時,赤色に塗りつぶす方法です。
何かご存知の方がいましたらご教授願います。

 Accepted Answer

Akira Agata
Akira Agata on 25 Dec 2017

2 votes

もし Zdata = 0 の等高線を重ね書きしたいということであれば、下記のようにして作成することができます。
あるいはご質問の内容は、Zdata <= 0 の領域を塗りつぶしたいということでしょうか??
Zdata = peaks(100);
figure
contourf(Zdata,400,'LineColor','none')
hold on
contour(Zdata,[0 0],'LineColor','r','LineWidth',2)
colorbar

3 Comments

Shotaro Suzuki
Shotaro Suzuki on 25 Dec 2017
回答いただきありがとうございます。
言葉足らずで申し訳ありません。ご指摘の通り後者の塗りつぶしの方法になります。
なので,塗りつぶしたい範囲は-1<Zdata<1であり,この範囲内を特定の色で塗りつぶすことは可能でしょうか。
Zdataの形状がシンプルであれば、Zdata = -1,1 それぞれについて contour 関数で等高線行列を作成して、その情報をもとに patch で塗りつぶす領域を作成するという方法があります。
もう少し簡単な別の方法としては、 surf 関数で赤色の3次元表面プロットを作成したあと、zlim([-1 1]) として [-1 1] 以外の部分をカットして視点などを調整することで、同様の結果を得ることができます。
Zdata = peaks(100);
figure
surf(Zdata,'EdgeColor','none','FaceColor','r')
zlim([-1 1])
xlim([1 100])
ylim([1 100])
view(2)
Shotaro Suzuki
Shotaro Suzuki on 26 Dec 2017
surf関数を用いて作成することができました。
ご丁寧に教えていただきありがとうございました。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!