# Reversing y axis direction causes xticks to invert and overlap with labels

35 vues (au cours des 30 derniers jours)
Kelly Hokanson le 21 Nov 2018
I just switched from 2015a to 2018b and encounted a problem with the xticks and corresponding labels whenever I invert the y-axis. The Xtick direction seems reversed from the set value (in or out) and they overlap with the labels. I have no clue how to fix this.
Thanks!
subplot(1,3,1)
plot(rand(10,1),rand(10,1).*(1E-8))
subplot(1,3,2)
plot(rand(10,1),rand(10,1).*(1E-8))
set(gca,'Ydir','reverse')
subplot(1,3,3)
plot(rand(10,1),rand(10,1).*(1E-8))
set(gca,'Ydir','reverse')
set(gca,'TickDir','out')
##### 4 commentairesAfficher 2 commentaires plus anciensMasquer 2 commentaires plus anciens
Star Strider le 21 Nov 2018
My pleasure!
Consider posting the MathWorks reply in a Comment here.
Kelly Hokanson le 21 Nov 2018
Modifié(e) : Kelly Hokanson le 21 Nov 2018
From the support team:
"I have been investigating the issue for a while now and unfortunately have not been able to come up with a workaround yet. I believe the issue is caused due to the presence of the exponent in the yaxis. The code snippet you provided on the MATLAB Answers page works as expected when (1E-8) exponent is not present.
If the exponent value of the y data is known previously, perhaps we could plot the y data without the exponent and specify the exponent in the ylabel. The following example shows how we may be able to achieve this.
>> f=figure;
>> x=1:10; y=rand(10, 1)*(1E-8);
>> Exp = max(floor(log10(y)));
>> plot(x, y*(10^-Exp));
>> ylabel(strcat(' x 10e', num2str(Exp)))
>> set(gca, 'Ydir', 'reverse')

Connectez-vous pour commenter.

### Réponse acceptée

Samuel Coakley le 31 Mai 2019
Modifié(e) : Samuel Coakley le 31 Mai 2019
So I ran into the same problem and my solution is below.
Say you are plotting some data in A. Instead of plotting just A, plot -A and change the y tick labels. This means you don't have to reverse the axis so the x tick labels are still in the right place.
plot(1:length(A), -A)
yt = get(gca,'YTickLabel');
for ii=1:length(yt)
ytt{ii} = yt{ii}(2:end); % This trims the minus sign from the negative numbers
end
set(gca, 'YTickLabel', ytt)
##### 1 commentaireAfficher -1 commentaires plus anciensMasquer -1 commentaires plus anciens
Kelly Hokanson le 4 Juin 2019

Connectez-vous pour commenter.

### Plus de réponses (2)

Stefanie Schwarz le 22 Mar 2021
Modifié(e) : Stefanie Schwarz le 22 Mar 2021
This is a bug in R2018b that was fixed in R2019a. See the following Bug Report:
A workaround is to set the Y-axis label to text and insert spaces.
Example:
>> set(gca, 'YTickLabel', {'0 ', '1 ', '2 ', '3 ', '4 '})
##### 0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

Robert Weigel le 13 Mai 2021
Adding an empty subscript worked for the case when the x-tick labels have exponents.
xtl = get(gca,'XTickLabel'); % {'10^{1}', '10^{2}'}
for i = 1:length(xtl)
xtl{i} = [xtl{i},'_{ }']; % Append empty subscript
end
set(gca,'XTickLabel',xtl);
##### 0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

### Catégories

En savoir plus sur Axis Labels dans Help Center et File Exchange

R2018b

### Community Treasure Hunt

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

Start Hunting!

Translated by