コンターレベル数とレベル範囲を任意に指定する方法
조회 수: 37 (최근 30일)
이전 댓글 표시
コンター図においてレベルの範囲とその範囲におけるレベル数(分割数)を指定したいと思っています.
例えば,以下は表示レベル範囲を1e-1*[-1 1],その間におけるコンターレベル分割数を50にしようとしています.
x = linspace(-2*pi,2*pi);
y = linspace(0,4*pi);
[X,Y] = meshgrid(x,y);
Z = sin(X)+cos(Y);
contourf(X,Y,Z,1e-1*linspace(-1,1,50),'LineStyle','none')
colorbar
しかし,上記を実行するとマイナス側がホワイトアウトしてしまうようです.
ホワイトアウトを防ぎつつコンターレベルとレベル数を任意に指定する方法はありますか?
よろしくお願いいたします.
※追記
Zデータは後で変更されることを想定していて,つまり下限の値以下は常に青にしたいです
レベルを指定しない場合,下限を超えてもホワイトアウトしないのは興味深いです.
x = linspace(-2*pi,2*pi);
y = linspace(0,4*pi);
[X,Y] = meshgrid(x,y);
Z = sin(X)+cos(Y);
% [~,c]=contourf(X,Y,Z,10,'LineStyle','none'); % ホワイトアウトする
[~,c]=contourf(X,Y,Z,'LineStyle','none');
colorbar
pause()
c.ZData = Z*5;
댓글 수: 0
채택된 답변
Naoya
2021년 2월 15일
を確認しますと、"プロットに表示される最低レベルよりも小さい値が Z に含まれる場合、最低レベルと Z の最小値との間の領域は白になります。" と記述があります。
そのため、白を回避する一案としては、以下
>> contourf(X,Y,Z,[-2,1e-1*linspace(-1,1,50)] ,'LineStyle','none')
>> caxis([-0.1 0.1])
のように、もう一段小さい最小レベルを追加します。
caxis で、カラーマップの範囲を -0.1 ~ 0.1 に設定すれば、 元の最小レベル以下を "青" にすることができます。
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!