Too many points on x-axis

5 views (last 30 days)
Karl
Karl on 4 Jun 2013
If you run the following script, Matlab uses 0.5 increments on the x-axis. This gives the wrong label, since it starts over again after 6 points on the x-axis. Does anybody know how to make sure that the increments are made so that the labels get correct?
test= rand(11,8,6);
test2=test
Alder = {'<20', '2029','3039','4049','5059','6069','>70', 'all'};
Aar = {'2011', '2012', '2013_1', '2014_1', '2014_s2', '2014_s5'};
nAlder = length(Alder);
nAar = length(Aar);
figure
hold on
for iAlder = 1:nAlder
plot(squeeze(test2(11,iAlder,:)));
set(gca, 'XTickLabel',Aar)
end
hold off

Answers (2)

Karl
Karl on 5 Jun 2013
Edited: Karl on 5 Jun 2013
Putting the following line between the plot-command line and the XTickLabel-command worked
set(gca, 'XTick',[1 2 3 4 5 6])
Does anybody know why Matlab uses 0.5 increments on the axis? Is this always a problem, so that one always has to use the extra command line listed above in cases like mine?
  2 Comments
Iain
Iain on 5 Jun 2013
Matlab just runs through a set process for determining the tick values. If you have more than 6 x values, you'll see the tick locations change.
If you want specific tick locations, you need to specify them.
Karl
Karl on 5 Jun 2013
The funny thing is that there are only 6 values originally...

Sign in to comment.


Jan
Jan on 5 Jun 2013
Perhaps this helps:
figure
data = squeeze(test2(11, :, :));
plot(1:length(Alder), data); % perhaps: data.'
set(gca, 'XTickLabel', Aar, 'XTick', 1:length(Alder))
  2 Comments
Karl
Karl on 5 Jun 2013
The same problem appears when running your commands.
I think this illustrates the source of the problem:
test= rand(11,8,6);
figure
hold on
for i= 1:8
plot(squeeze(test(11,i,:)));
end
hold off
Try running the commands above. You will see that there are 11 x-axis "labels/points" with 0.5 increments, dispite that there are only y-vaules for 6 of these points. I think this is the source of the problem. When one uses XThickLabel and a 1x6 vector, it will be repeated after the 6th point/label in the original plot. The question is why Matlab does not make 6 points in the first place. Has it something to do with the test-matrix having 11 rows?
Iain
Iain on 5 Jun 2013
No. It simply comes up with what matlab reckons the best scaling is for the plot. It seems to try to ensure that there are BETWEEN 7 and 11 ticks.
Try:
for i = 1:30
figure
plot(randn(i,1))
end
You'll see what I mean.

Sign in to comment.

Categories

Find more on Graphics Performance 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!