How to label specific increments
Show older comments
So this is my code:
x = linspace(0,2*pi,100);
y1 = cos(x).^2;
plot(x,y1,'--r')
ylim([-1 1])
xticks(0:pi/100:2*pi)
hold on
y2 = sin(x.^2);
plot(x,y2,'b')
hold off
legend('cos^2(x)','sin(x^2)')
xlabel('x')
ylabel('y')
title('Plot of y1=cos^2(x) and y2=sin(x^2)')
and i set it so there is a increment every pi/100, but i only want it to show a label for 0, pi/2, pi, 3pi/2, and 2pi. With the code I have set up right now, this is a label for every increment so the numbers at the bottom are jumbled together.
Answers (2)
Ameer Hamza
on 2 Oct 2020
Set the ticks and minor ticks seperately
x = linspace(0,2*pi,100);
y1 = cos(x).^2;
y2 = sin(x.^2);
ax = axes();
hold on
plot(x,y1,'--r')
ylim([-1 1])
ax.XMinorTick ='on';
ax.XAxis.MinorTickValues = 0:pi/100:2*pi;
ax.XTick = (0:1/2:2)*pi;
ax.XTickLabel = {'0', '\pi/2', '\pi', '3\pi/2', '2\pi'};
plot(x,y2,'b')
hold off
legend('cos^2(x)','sin(x^2)')
xlabel('x')
ylabel('y')
title('Plot of y1=cos^2(x) and y2=sin(x^2)')
Star Strider
on 2 Oct 2020
Try this:
x = linspace(0,2*pi,100);
y1 = cos(x).^2;
plot(x,y1,'--r')
ylim([-1 1])
xticks(0:pi/100:2*pi)
xticklabels({});
xtv = 0:pi/100:2*pi;
idx = find(ismembertol(xtv,[0, pi/2, pi, 3*pi/2, 2*pi], 0.001));
xtl = {'0','$\frac{\pi}{2}$','$\pi$','$\frac{3\pi}{2}$','$2\pi$'};
text(xtv(idx), min(ylim)*ones(size(idx)), xtl, 'Interpreter','latex', 'HorizontalAlignment','center', 'VerticalAlignment','top')
xlim([min(x) max(x)])
hold on
y2 = sin(x.^2);
plot(x,y2,'b')
hold off
legend('cos^2(x)','sin(x^2)', 'Location','SW')
xlabel('x')
ylabel('y')
title('Plot of y1=cos^2(x) and y2=sin(x^2)')
producing:

.
Categories
Find more on Multirate Signal Processing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!