Figure Axis formatting; how to move label from axis
136 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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.
0 Commenti
Risposta accettata
Adam Danz
il 13 Mar 2019
Modificato: Adam Danz
il 3 Apr 2019
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 Commenti
Adam Danz
il 12 Mag 2021
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.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Data Distribution Plots in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!