図の真ん中にあるように xlabel の位置を中央に配置するにはどうすればよいですか? LaTeX を使用する場合、xlabel の中心をキャプションの中心に揃えたい
2 に答える
このxlabel
関数はstring
グラフィックスオブジェクトを作成し、これをXLabel
現在のAxesオブジェクトのプロパティとして設定します。string
を呼び出すときに、このオブジェクトのプロパティを定義できますxlabel
。Position
デフォルトで[00]に設定されているプロパティを調整することにより、文字列オブジェクトの中心の位置を調整できます。
まず、現在の位置を取得します(プロットして使用した後xlabel
):
vec_pos = get(get(gca, 'XLabel'), 'Position');
次に、位置を更新します(たとえば、xを-0.5に調整します)。
set(get(gca, 'XLabel'), 'Position', vec_pos + [-0.5 0 0]);
これは、ドキュメントに記載されている限り、デフォルトでx軸のデータ単位で実行されます。「Time(s)」というラベルは0.13秒にあるように見えます(あなたの図によると)。0.008秒から0.122秒(「推測」)で左に調整してみましょう。
強制的に「データ」単位にし、0.008で調整します。
str_defaultUnits = get(get(gca, 'XLabel'), 'Units'); % copy this
set(get(gca, 'XLabel'), 'Units', 'data'); % change it
set(get(gca, 'XLabel'), 'Position', vec_pos + [-0.008 0 0]); % adjust position
set(get(gca, 'XLabel'), 'Units', str_defaultUnits); % set it back as it was
別の注意点:あなたが達成しようとしていることはやや間違っていると思います:)軸のラベルは、図のキャプション全体に無理に揃えるべきではありません。なぜこれをするのですか?図のキャプションは、プロット領域だけでなく、図全体の中央に配置されます。最終的には変に見えるのではないかと思います。もちろんあなたの選択。
あなたがやろうとしていることの詳細は、matlab の印刷設定とラテックス オプション (キャプションの raggedright や centering など) によって異なりますが、少なくとも xlabel を軸の中心ではなく図の中心に配置する必要があります。 .
fh=figure;
ah=axes;
plot(ah,[2.0:10],[2:10])
xlh=xlabel(ah,'my xlabel');
drawnow;
xlh_pos=get(xlh,'position');
ah_pos=get(ah,'position');
x_lim=xlim;
xlh_pos_fig=0.5;%put it in the middle
xlh_pos(1)=(xlh_pos_fig - ah_pos(1))*(x_lim(2)-x_lim(1))/ah_pos(3)+x_lim(1);
set(xlh,'position',xlh_pos);