Filter löschen
Filter löschen

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

11 Ansichten (letzte 30 Tage)
Shinij Kumagai
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
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
Shinij Kumagai
Shinij Kumagai am 5 Aug. 2020
ご連絡いただきありがとうございます。
実際のコードを添付しますので、見ていただけると嬉しいです。
以上、よろしくおねがいします。

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Takumi
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
Shinij Kumagai
Shinij Kumagai am 6 Aug. 2020
迅速に回答いただきありがとうございます。無事に実行することができました。
しかし、変数を一緒に提供しておらずすみませんでした。次回は、一緒に提供するようにします。
最後に、描画の速度を早くする方法について、ご教授いただけると幸いです。
今回、描画の速度を早くしたくて、元のグラフに対して、データだけを置き換えるということを考えました。この考えは、妥当でしょうか?
すみませんが、よろしくお願いします。
Takumi
Takumi am 6 Aug. 2020
はい.妥当です.こちらにそのよなことが記載されています.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

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

Produkte


Version

R2015a

Community Treasure Hunt

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

Start Hunting!