Modifying Figure Y-Axis Exponent Parameter After YTickLabels are Modified
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Innocentio Loe
el 21 de Mayo de 2020
Comentada: Innocentio Loe
el 22 de Mayo de 2020
Hello,
simply put, I have a figure in which I want to mark a certain YTickLabels as text, instead of value.
It all goes well, but by doing so, the exponent marker on the Y-Axis is gone. Forcing to set the value of 'Exponent' property of the YAxis doesn't work either. I guess it's because the Y-Axis ruler now has both number and text, so there is no proper scaling there.
I wonder if there is any workaround to this. Of course it is possible to add the exponent manually later, but I kind of want to have a procedural method for consistency.
The code below will demonstrate what I meant.
% Plot Data
figure(1);
t = linspace(0,1,100);
y = 0.005*sin(2*pi/0.01*t);
plot(t,y);
hold on;
plot(xlim,[0 0],'k--');
grid on;
% Adding a line of interest
yval = 0.001;
plot(xlim,[yval yval],'k-');
hold off;
% Modify YTicks to Min-Y, 0, YVal, Max-Y
yticks = get(gca,'YTick');
yticks = sort([min(yticks),0,yval, max(yticks)],'ascend');
% Modify YTickLabels
ylabels = get(gca,'YTickLabel');
ylabels(3) = {'YVal'};
set(gca,'YTickLabel', ylabels);
set(get(gca,'YAxis'),'Exponent',-3); %--> This doesn't work now
0 comentarios
Respuesta aceptada
dpb
el 21 de Mayo de 2020
Editada: dpb
el 21 de Mayo de 2020
Don't use manual labels on ticks, just don't put ticks at the unwanted places. When write labels, the EponentMode is set to 'Manual' and then the exponent display goes away.
hL=plot(t,y);
hold on
yline(yval)
yl=ylim;
yticks([yl(1) 0 yl(2)])
hTxt=text(-0.01,yval,'YVal','HorizontalAlignment','right');
produces
BTW, you alias the MATLAB builtin yticks function above; don't do that! Makes high probability of coding errors later when want to use it.
Another alternative would be to not try to futz with the axis label but use the annotation/label of the yline object instead. It will be on the line inside the graph area but doesn't require the other manipulations to not write the one tick value. And, if yval isn't some nice even number always, that doesn't match up nicely with where tick marks logically go, it isn't affected.
A possible enhancement request for the yline object might be an 'outside' position key value--altho it raises the problem of potential clash with tick labels but a smart implementation could deal with it.
Más respuestas (0)
Ver también
Categorías
Más información sobre Axis Labels en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!