Figure Axis formatting; how to move label from axis

130 ビュー (過去 30 日間)
jfrazie9
jfrazie9 2019 年 3 月 13 日
コメント済み: Adam Danz 2021 年 5 月 12 日
Hello, I am trying to create my own x axis value labels on a logarithmic scale. To do this I am trying to move the label down, thus creating space between the edge of the plot and the x axis title. I then would like am making annotation boxes with the values I want as my labels. I can create the annotation boxes and move them but am unable to create the space between the axis label and x axis title. Any help is greatly appreciated.

採用された回答

Adam Danz
Adam Danz 2019 年 3 月 13 日
編集済み: Adam Danz 2019 年 4 月 3 日
To change the position of the x label, store the handle to the xlabel, then change its position property. By default the axis labels are in 'data' units. If you want to move the x label down, you'll want to subtract from the y-coordinate of the x label position.
xlh = xlabel('x label');
xlh.Position(2) = xlh.Position(2) - 0.1; % move the label 0.1 data-units further down
In this demo below, the x label is moved down by 10% of its distance to the axes. Note that the x label position could have a positive or negative y-value so abs() is needed in order to always offet toward -inf.
figure
axh = axes;
xlh = xlabel('x label');
xlh.Position(2) = xlh.Position(2) - abs(xlh.Position(2) * 0.1);
Caution: if you move the x label too far, it may no longer be visible.
  2 件のコメント
giannit
giannit 2021 年 5 月 12 日
編集済み: giannit 2021 年 5 月 12 日
Doesn't work with heatmap, is there another way? Thanks
Adam Danz
Adam Danz 2021 年 5 月 12 日
Heatmap axes are a different species and are difficult to customize. But that won't stop us 😎
To access the xlabel handle you have to use an undocumented method that will throw a warning but since we don't like to see warnings, it will be temporarily suppressed.
% h is the heatmap handle obtained by h=heatmap(__)
% Temporarily suppress warning associated with undocumented
% access to axes handle
origState = warning('query', 'MATLAB:structOnObject');
warningCleanup = onCleanup(@()warning(origState));
warning('off','MATLAB:structOnObject')
S = struct(h); % where h is heatmap handle
clear('warningCleanup')
xlh = S.Axes.XLabel; % <--- xlabel handle
Now you can set it's position properties as shown in my answer.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeData Distribution Plots についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by