コンターマップのカラーバーのラベルの変更
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Shinij Kumagai
am 4 Aug. 2020
Beantwortet: Shinij Kumagai
am 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 Kommentare
Takumi
am 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
Akzeptierte Antwort
Takumi
am 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 Kommentare
Weitere Antworten (1)
Siehe auch
Kategorien
Mehr zu Annotations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!