コンターマップのカラーバーのラベルの変更

16 views (last 30 days)
Shinij Kumagai
Shinij Kumagai on 4 Aug 2020
Answered: Shinij Kumagai on 7 Aug 2020
SubplotとFor文で、カラーバーのラベル名を順番に設定しようとしましたがうまくいきません。
2×2のコンターマップのカラーバーの変数を変えようとしましたが、
最後(2,2)セルのグラフのカラーバーの変数だけが順番に更新され、
他のセル位置のグラフのカラーバーの変数は固定されてしまいます。
すみませんが、ご教授いただけると幸いです。
コードは、下記になります。
for i=1:4
~~~~~省略
Cbar(i)=colorbar;
Cbar(i).Label.String=char(Variable(Vz(i)));←Variableはラベル名が格納された行列です。
  2 Comments
Shinij Kumagai
Shinij Kumagai on 5 Aug 2020
ご連絡いただきありがとうございます。
実際のコードを添付しますので、見ていただけると嬉しいです。
以上、よろしくおねがいします。

Sign in to comment.

Accepted Answer

Takumi
Takumi on 6 Aug 2020
コードを添付してくださりありがとうございます.コードを省略されるのは構いませんが,こちらで実行できるように変数もサンプル値で埋めていただけると非常に助かります.
さて,カラーバーの文字列等をあとから変更したい場合は,そのハンドルを保存しておくと良いのですが,以下のコードではCbarが毎回更新されてしまっています.
%途中省略
%最初のサブプロットグラフ
for i=1:4
ff(i)=subplot(2,2,i);
[c1,h1(i)]=contourf(xq,yq,BDmatrixq{1,i},100);
set(h1(i),'edgecolor','none');
xlabel('Labe1');
ylabel('Labe2');
colormap jet;
Cbar=colorbar; % ここ
Cbar.Label.String=char(Variable(Vz(i)));
Cbar.Label.FontSize=Fontsize;
end
他のハンドルでもすでにやられているように以下のように配列にするとよいかとおもいます.
Cbar(i)=colorbar;
そしてプロットを更新する以下のコードですがCbar(i)=colorbarで新たにカラーバーを作成する必要はありません.
%サブプロットのグラフのデータだけを置き換える
for i=1:4
h1(i).LevelListMode = 'auto ';
set(h1(i),'XData',xq,'YData',yq,'ZData',cell2mat(BDmatrixq(1,i)));
h1(i).TextListMode = 'manual ';
zlin = linspace(min(z),max(z),100);
h1(i).LevelList =zlin;
h1(i).TextList =zlin;
set(h1(i),'edgecolor','none');
drawnow
%Cbar(i)=colorbar;
Cbar(i).Label.String=char(Variable(Vz(i)));
Cbar(i).Label.FontSize=Fontsize;
end
これで望みの動作になりますでしょうか
  2 Comments
Takumi
Takumi on 6 Aug 2020
はい.妥当です.こちらにそのよなことが記載されています.

Sign in to comment.

More Answers (1)

Shinij Kumagai
Shinij Kumagai on 7 Aug 2020
ありがとうございました。

Products


Release

R2015a

Community Treasure Hunt

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

Start Hunting!