コンターマップのカラーバーのラベルの変更
1 view (last 30 days)
Show older comments
SubplotとFor文で、カラーバーのラベル名を順番に設定しようとしましたがうまくいきません。
2×2のコンターマップのカラーバーの変数を変えようとしましたが、
最後(2,2)セルのグラフのカラーバーの変数だけが順番に更新され、
他のセル位置のグラフのカラーバーの変数は固定されてしまいます。
すみませんが、ご教授いただけると幸いです。
コードは、下記になります。
for i=1:4
~~~~~省略
Cbar(i)=colorbar;
Cbar(i).Label.String=char(Variable(Vz(i)));←Variableはラベル名が格納された行列です。
2 Comments
Takumi
on 5 Aug 2020
質問の内容を再現してみましたが,正常に更新されます.
エラーを完全に再現できるコードを掲示していただけますとより良い回答ができます.
[X,Y,Z] = peaks;
Variable = {'label1','label2','label3','label4'};
for i=1:4
figure(1)
subplot(2,2,i);
contour(X,Y,Z,i*10);
Cbar(i)=colorbar;
Cbar(i).Label.String = Variable{i};
end
Accepted Answer
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
More Answers (1)
See Also
Categories
Find more on Annotations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!